Large scale storage system

ABSTRACT

A distributed storage system comprising: an infrastructure layer including interconnected computer nodes, wherein: each one of the interconnected computer nodes comprising processing resources configured to execute a Unified Distributed Storage Platform (UDSP) agent configured to: receive a task having assignments, calculating grades for assignments such that each grade is indicative of a suitability to execute assignments while meeting at least one Service Level Specification (SLS) requirement. The grade is calculated based on storage related resources parameters data. The task is routed to a more suitable computer node based on the calculated grades. The updated infrastructure layer is created in response to adding interconnected computer nodes and executing assignments of following tasks or routing the following tasks to a more suitable computer node based on the calculated grades.

FIELD OF PRESENTLY DISCLOSED SUBJECT MATTER

The invention relates to large scale storage systems and in particularto an apparatus and a method for implementing such systems.

BACKGROUND

Distributed storage systems have rapidly developed over the last decadeas networks grow in capacity and speed. With networks expanding fromlocal area networks (LAN) to global wide area networks (WAN), businessesare becoming more globally distributed, resulting in a demand fordistributed storage systems to provide data storage and access overremote geographic locations. There is thus a need in the art for a newmethod and system for distributing data storage over a general purposenetwork.

Prior art references considered to be relevant as background to thepresently disclosed subject matter are listed below. Acknowledgement ofthe references herein is not to be inferred as meaning that these are inany way relevant to the patentability of the presently disclosed subjectmatter.

U.S. Patent Publication No. 2009/0070337, “Apparatus and Method for aDistributed Storage Global Database”, relates to “A geographicallydistributed storage system for managing the distribution of dataelements wherein requests for given data elements incur a geographicinertia. The geographically distributed storage system comprisesgeographically distributed sites, each comprises a site storage unit forlocally storing a portion of a globally coherent distributed databasethat includes the data elements and a local access point for receivingrequests relating to ones of the data elements. The geographicallydistributed storage system comprises a data management module forforwarding at least one requested data element to the local access pointat a first of the geographically distributed sites from which therequest is received and storing the at least one requested data elementat the first site, thereby to provide local accessibility to the dataelement for future requests from the first site while maintaining theglobally coherency of the distributed database.”

U.S. Pat. No. 5,987,505, “Remote Access and Geographically DistributedComputers in a Globally Addressable Storage Environment”, relates to “Acomputer system employs a globally addressable storage environment thatallows a plurality of networked computers to access data by addressingeven when the data is stored on a persistent storage device such as acomputer hard disk and other traditionally non-addressable data storagedevices. The computers can be located on a single computer network or ona plurality of interconnected computer networks such as two local areanetworks (LANs) coupled by a wide area network (WAN). The globallyaddressable storage environment allows data to be accessed and shared byand among the various computers on the plurality of networks.”

International Journal of Computer Applications 2010 (0975-8887), Volume1—No. 22, “Unified Virtual Storage: Virtualization of DistributedStorage in a Network”, Ms. S. V. Patil et al., describes “a way toefficiently utilize free disk space on Desktop machines connected over anetwork. In many networks today, the local disks of a client node areonly used sporadically. This is an attempt to mange the data storages ina network efficiently and to provide the software support for sharing ofdisk space on Desktop machines in LAN. In the current situation, storageexpansion on conventional servers has constraints like, maximumexpansion limitation, costly affair and in case of hardware replacement,up gradation, the manual relocation of Data becomes messy. UVS (UnifiedVirtual Storage) is an attempt to efficiently utilize freely availabledisk space on Desktop machines connected over a network. Its purpose toreduce load of data traffic on network server, to efficiently utilizespace on client nodes thereby avoiding wastage of space, It alsoeliminates Hardware restriction for storage Expansion and providesLocation transparency of data store. The main advantage of UVS is thatit can be seamlessly integrated into the existing infrastructure (LocalArea Network system). Virtual Storage is virtually infinite supportingscalable architecture. The client node can use the Unified Virtual Driveas a single point access for Distributed Storage across differentservers thereby eliminating an individual addressing of the servers. Theperformance of prototype implemented on a UVS Server connected bynetwork and performance is better the n the centralized system and thatthe overhead of the framework is moderate even during high load.”

U.S. Patent Publication No. 2011/0153770, “Dynamic Structural Managementof a Distributed Caching Infrastructure”, relates to “a method, systemand computer program product for the dynamic structural management of ann-Tier distributed caching infrastructure. In an embodiment of theinvention, a method of dynamic structural management of an n-Tierdistributed caching infrastructure includes establishing a communicativeconnection to a plurality of cache servers arranged in respective tiernodes in an n-Tier cache, collecting performance metrics for each of thecache servers in the respective tier nodes of the n-Tier cache,identifying a characteristic of a specific cache resource in acorresponding one of the tier nodes of the n-Tier crossing a threshold,and dynamically structuring a set of cache resources including thespecific cache resource to account for the identified characteristic”.

SUMMARY

In accordance with an aspect of the presently disclosed subject matter,there is provided a computer node configured to being connected to aninfrastructure layer including interconnected computer nodes, at leastone of the interconnected computer nodes comprising one or morestorage-related resources, the computer node comprising at least oneprocessing resource configured to execute a Unified Distributed StoragePlatform (UDSP) agent, wherein the UDSP agent is configured to receive atask comprising at least one assignment; calculate grades for at leastone of the assignments in respect of at least one of the interconnectedcomputer nodes, such that each grade being indicative of a suitabilityof a respective computer node of the interconnected computer nodes toexecute a respective assignment of the assignments while meeting atleast one Service Level Specification (SLS) requirement, the grade iscalculated also based on parameters data relating to one or morestorage-related resources connected to the respective computer node, ifany; execute one or more of the assignments or route the task to a moresuitable computer node, based on the calculated grades;

calculate grades for assignments of following tasks in respect of atleast one added interconnected computer node of an updatedinfrastructure layer; the updated infrastructure layer is created inresponse to adding at least one additional interconnected computer nodethereto; and execute one or more of the assignments of following tasksor route the following tasks to a more suitable computer node of theupdated infrastructure layer, based on the calculated grades.

In accordance with certain examples of the presently disclosed subjectmatter, there is further provided a computer node wherein whilecalculating grades for the assignments of following tasks, the updatedinfrastructure layer is created, and the calculation is performed inrespect of at least one added interconnected computer node of thecreated updated infrastructure layer.

In accordance with certain examples of the presently disclosed subjectmatter, there is yet further provided a computer node wherein whilecalculating grades for the assignments of following tasks, the updatedinfrastructure layer is created, and the calculation is performed inrespect of at least one interconnected computer node of the createdupdated infrastructure layer.

In accordance with certain examples of the presently disclosed subjectmatter, there is yet further provided a computer node wherein theupdated infrastructure is created dynamically.

In accordance with certain examples of the presently disclosed subjectmatter, there is yet further provided a computer node wherein grades arecalculated only for pending assignments.

In accordance with certain examples of the presently disclosed subjectmatter, there is yet further provided a computer node wherein the one ormore storage-related resources include at least one storage-relatedresource of the following storage-related resource categories: cacheresources, data storage resources and network resources.

In accordance with certain examples of the presently disclosed subjectmatter, there is yet further provided a computer node wherein the one ormore storage-related resources include at least one storage-relatedresource of each of the following storage-related resource categories:cache resources, data storage resources and network resources.

In accordance with certain examples of the presently disclosed subjectmatter, there is yet further provided a computer node wherein theassignment grades are calculated by an optimization engine.

In accordance with certain examples of the presently disclosed subjectmatter, there is yet further provided a computer wherein theoptimization engine uses one or more of the following optimizationtechniques: Linear programming; Simulated annealing; Genetic algorithms.

In accordance with certain examples of the presently disclosed subjectmatter, there is yet further provided a computer node wherein the one ormore optimization techniques uses heuristics or approximates.

In accordance with certain examples of the presently disclosed subjectmatter, there is yet further provided a computer node wherein the moresuitable computer node is a most suitable computer node based on thecalculated grades.

In accordance with certain examples of the presently disclosed subjectmatter, there is yet further provided a computer node wherein the UDSPagent is further configured to calculate an integrated grade based onthe calculated assignments grades, and wherein the execution of one ormore of said assignments or routing the task to a more suitable computernode, is based on the calculated integrated grade.

In accordance with certain examples of the presently disclosed subjectmatter, there is yet further provided a computer node wherein the taskis received from a client server.

In accordance with certain examples of the presently disclosed subjectmatter, there is yet further provided a computer node wherein the taskis received from a client server through a gateway resource.

In accordance with certain examples of the presently disclosed subjectmatter, there is yet further provided a computer node wherein the UDSPagent is further configured to: monitor at least one parameterindicative of the current state of the computer node or of the currentstate of one or more storage-related resources connected to the computernode, if any; propagate a notification indicative of a change to the atleast one monitored parameter to at least one of the interconnectedcomputer nodes.

In accordance with certain examples of the presently disclosed subjectmatter, there is yet further provided a computer node wherein the UDSPagent is further configured to calculate grades for assignments offollowing tasks in respect of at least one modified interconnectedcomputer node of the updated infrastructure; the updated infrastructurelayer includes at least one modified interconnected computer node; themodification including at least one of (i) at least one newstorage-related resource is connected to the respective node (ii) atleast one existing storage-related resource is disconnected from therespective node (iii) at least one existing storage-related resource ismodified; calculate grades for assignments of following tasks in respectof at least one interconnected computer node having new storage-relatedresources connected thereto or having storage-related resourcesdisconnected therefrom; and

execute one or more of the assignments of following tasks or route thefollowing tasks to a more suitable computer node of the updatedinfrastructure layer, based on the calculated grades.

In accordance with certain examples of the presently disclosed subjectmatter, there is yet further provided a computer node wherein the UDSPagent is further configured to: receive at least one Service LevelSpecification (SLS) comprising user-defined storage requirementsreferring to at least one logical storage entity, and storage-relatedresources parameters data relating to one or more storage-relatedresources connected to the interconnected computer nodes; calculate aconfiguration for the distributed storage system based, at least, on theat least one SLS and the storage-related resources parameter data; andautomatically allocate at least part of one of the storage-relatedresources according to the calculated configuration.

In accordance with certain examples of the presently disclosed subjectmatter, there is yet further provided a computer node wherein the UDSPagent is further configured to receive dynamic behavior parameters datarelating to dynamic behavior of the distributed storage system; upon atleast one SLS being breached, calculate a reconfiguration for thestorage system, based, at least, on the at least one SLS, thestorage-related resources parameter data and the dynamic behaviorparameter data; and automatically allocate at least part of one of thestorage-related resources according to the calculated reconfiguration.

In accordance with an aspect of the presently disclosed subject matter,there is yet further provided a method of operating a computer nodeconfigured to being connected to an infrastructure layer includinginterconnected computer nodes, at least one of the interconnectedcomputer nodes comprising one or more storage-related resources, themethod comprising:

receiving a task comprising at least one assignment; calculating gradesfor at least one of the assignments in respect of at least one of theinterconnected computer nodes, such that each grade being indicative ofa suitability of a respective computer node of the interconnectedcomputer nodes to execute a respective assignment of the assignmentswhile meeting at least one Service Level Specification (SLS)requirement, the grade is calculated also based on parameters datarelating to one or more storage-related resources connected to therespective computer node, if any; executing one or more of theassignments or routing the task to a more suitable computer node, basedon the calculated grades; calculating grades for assignments offollowing tasks in respect of at least one added interconnected computernode of an updated infrastructure layer; the updated infrastructurelayer is created in response to adding at least one additionalinterconnected computer node thereto; and executing one or more of theassignments of following tasks or routing the following tasks to a moresuitable computer node of the updated infrastructure layer, based on thecalculated grades.

In accordance with certain examples of the presently disclosed subjectmatter, there is yet further provided a method wherein while calculatinggrades for the assignments of following tasks, the updatedinfrastructure layer is created, and the calculation is performed inrespect of at least one added interconnected computer node of thecreated updated infrastructure layer.

In accordance with certain examples of the presently disclosed subjectmatter, there is yet further provided a method wherein while calculatinggrades for the assignments of following tasks, the updatedinfrastructure layer is created, and the calculating is performed inrespect of at least one interconnected computer node of the createdupdated infrastructure layer.

In accordance with certain examples of the presently disclosed subjectmatter, there is yet further provided a method wherein the updatedinfrastructure is created dynamically.

In accordance with certain examples of the presently disclosed subjectmatter, there is yet further provided a method wherein grades arecalculated only for pending assignments.

In accordance with certain examples of the presently disclosed subjectmatter, there is yet further provided a method wherein the one or morestorage-related resources include at least one storage-related resourceof the following storage-related resource categories: cache resources,data storage resources and network resources.

In accordance with certain examples of the presently disclosed subjectmatter, there is yet further provided a method wherein the one or morestorage-related resources include at least one storage-related resourceof each of the following storage-related resource categories: cacheresources, data storage resources and network resources.

In accordance with certain examples of the presently disclosed subjectmatter, there is yet further provided a method wherein the calculatinggrades is performed by an optimization engine.

In accordance with certain examples of the presently disclosed subjectmatter, there is yet further provided a method wherein the optimizationengine uses one or more of the following optimization techniques: Linearprogramming; Simulated annealing; Genetic algorithms.

In accordance with certain examples of the presently disclosed subjectmatter, there is yet further provided a method wherein the one or moreoptimization techniques uses heuristics or approximates.

In accordance with certain examples of the presently disclosed subjectmatter, there is yet further provided a method wherein the more suitablecomputer node is a most suitable computer node based on the calculatedgrades.

In accordance with certain examples of the presently disclosed subjectmatter, there is yet further provided a method further comprising:calculating an integrated grade based on the calculated assignmentsgrades, and wherein the executing one or more of the assignments orrouting the task to a more suitable computer node, is based on thecalculated integrated grades.

In accordance with certain examples of the presently disclosed subjectmatter, there is yet further provided a method wherein the task isreceived from a client server.

In accordance with certain examples of the presently disclosed subjectmatter, there is yet further provided a method wherein the task isreceived from a client server through a gateway resource.

In accordance with certain examples of the presently disclosed subjectmatter, there is yet further provided a method further comprisingmonitoring at least one parameter indicative of the current state of thecomputer node or of the current state of one or more storage-relatedresources connected to the computer node, if any; propagating anotification indicative of a change to the at least one monitoredparameter to at least one of the interconnected computer nodes.

In accordance with certain examples of the presently disclosed subjectmatter, there is yet further provided a method further comprising:calculating grades for assignments of following tasks in respect of atleast one modified interconnected computer node of the updatedinfrastructure; the updated infrastructure layer includes at least onemodified interconnected computer node; the modification including atleast one of (i) at least one new storage-related resource is connectedto the respective node (ii) at least one existing storage-relatedresource is disconnected from the respective node (iii) at least oneexisting storage-related resource is modified; calculating grades forassignments of following tasks in respect of at least one interconnectedcomputer node having new storage-related resources connected thereto orhaving storage-related resources disconnected therefrom; and executingone or more of the assignments of following tasks or routing thefollowing tasks to a more suitable computer node of the updatedinfrastructure layer, based on the calculated grades.

In accordance with certain examples of the presently disclosed subjectmatter, there is yet further provided a method further comprising:receiving at least one Service Level Specification (SLS) comprisinguser-defined storage requirements referring to at least one logicalstorage entity, and storage-related resources parameters data relatingto one or more storage-related resources connected to the interconnectedcomputer nodes; calculating a configuration for the distributed storagesystem based, at least, on the at least one SLS and the storage-relatedresources parameter data; and automatically allocating at least part ofone of the storage-related resources according to the calculatedconfiguration.

In accordance with certain examples of the presently disclosed subjectmatter, there is yet further provided a method further comprisingreceiving dynamic behavior parameters data relating to dynamic behaviorof the distributed storage system; upon at least one SLS being breached,calculating a reconfiguration for the distributed storage system, based,at least, on the at least one SLS, the storage-related resourcesparameter data and the dynamic behavior parameter data; andautomatically allocating at least part of one of the storage-relatedresources according to the calculated reconfiguration.

In accordance with an aspect of the presently disclosed subject matter,there is yet further provided a distributed storage system comprising:an infrastructure layer including interconnected computer nodes, whereineach one of the interconnected computer nodes comprising at least oneprocessing resource configured to execute a Unified Distributed StoragePlatform (UDSP) agent; at least one of the interconnected computer nodescomprising one or more storage-related resources; the UDSP agent isconfigured to receive a task comprising at least one assignment;calculate grades for at least one of the assignments in respect of atleast one of the interconnected computer nodes, such that each gradebeing indicative of a suitability of a respective computer node of theinterconnected computer nodes to execute a respective assignment of theassignments while meeting at least one Service Level Specification (SLS)requirement, the grade is calculated also based on storage-relatedresource parameters data relating to one or more storage relatedresources connected to the respective computer node, if any; execute oneor more of the assignments or route the task to a more suitable computernode of the infrastructure layer, based on the calculated grades;calculate grades for assignments of following tasks in respect of atleast one added interconnected computer node of an updatedinfrastructure layer; the updated infrastructure layer is created inresponse to adding at least one additional interconnected computer nodethereto; and execute one or more of the assignments of following tasksor route the following tasks to a more suitable computer node of theupdated infrastructure layer, based on the calculated grades.

In accordance with certain examples of the presently disclosed subjectmatter, there is yet further provided a distributed storage systemwherein while calculating grades for the assignments of following tasks,the updated infrastructure layer is created, and the calculation isperformed in respect of at least one added interconnected computer nodeof the created updated infrastructure layer.

In accordance with certain examples of the presently disclosed subjectmatter, there is yet further provided a distributed storage systemwherein while calculating grades for the assignments of following tasks,the updated infrastructure layer is created, and the calculation isperformed in respect of at least one interconnected computer node of thecreated updated infrastructure layer.

In accordance with certain examples of the presently disclosed subjectmatter, there is yet further provided a distributed storage systemwherein the updated infrastructure is created dynamically.

In accordance with certain examples of the presently disclosed subjectmatter, there is yet further provided a distributed storage systemwherein grades are calculated only for pending assignments.

In accordance with certain examples of the presently disclosed subjectmatter, there is yet further provided a distributed storage systemwherein the one or more storage-related resources include at least onestorage-related resource of the following storage-related resourcecategories: cache resources, data storage resources and networkresources.

In accordance with certain examples of the presently disclosed subjectmatter, there is yet further provided a distributed storage systemwherein the one or more storage-related resources include at least onestorage-related resource of each of the following storage-relatedresource categories: cache resources, data storage resources and networkresources.

In accordance with certain examples of the presently disclosed subjectmatter, there is yet further provided a distributed storage systemwherein the assignment grades are calculated by an optimization engine.

In accordance with certain examples of the presently disclosed subjectmatter, there is yet further provided a distributed storage systemwherein the optimization engine uses one or more of the followingoptimization techniques: Linear programming; Simulated annealing;Genetic algorithms.

In accordance with certain examples of the presently disclosed subjectmatter, there is yet further provided a distributed storage systemwherein the one or more optimization techniques uses heuristics orapproximates.

In accordance with certain examples of the presently disclosed subjectmatter, there is yet further provided a distributed storage systemwherein the more suitable computer node is a most suitable computer nodebased on the calculated grades.

In accordance with certain examples of the presently disclosed subjectmatter, there is yet further provided a distributed storage systemwherein the UDSP agent is further configured to calculate an integratedgrade based on the calculated assignments grades, and wherein theexecuting one or more of the assignments or routing the task to a moresuitable computer node, is based on the calculated integrated grades.

In accordance with certain examples of the presently disclosed subjectmatter, there is yet further provided a distributed storage systemwherein the task is received from a client server.

In accordance with certain examples of the presently disclosed subjectmatter, there is yet further provided a distributed storage systemwherein the task is received from a client server through a gatewayresource.

In accordance with certain examples of the presently disclosed subjectmatter, there is yet further provided a distributed storage systemwherein the UDSP agent is further configured to monitor at least oneparameter indicative of the current state of the computer node or of thecurrent state of one or more storage-related resources connected to thecomputer node, if any; propagate a notification indicative of a changeto the at least one monitored parameter to at least one of theinterconnected computer nodes.

In accordance with certain examples of the presently disclosed subjectmatter, there is yet further provided a distributed storage systemwherein the UDSP agent is further configured to:

calculate grades for assignments of following tasks in respect of atleast one modified interconnected computer node of the updatedinfrastructure; the updated infrastructure layer includes at least onemodified interconnected computer node; the modification including atleast one of (i) at least one new storage-related resource is connectedto the respective node (ii) at least one existing storage-relatedresource is disconnected from the respective node (iii) at least oneexisting storage-related resource is modified; calculate grades forassignments of following tasks in respect of at least one interconnectedcomputer node having a new storage-related resources connected theretoor having storage-related resources disconnected therefrom; and executeone or more of the assignments of following tasks or route the followingtasks to a more suitable computer node of the updated infrastructurelayer, based on the calculated grades.

In accordance with certain examples of the presently disclosed subjectmatter, there is yet further provided a distributed storage systemwherein the UDSP agent is further configured to:

receive at least one Service Level Specification (SLS) comprisinguser-defined storage requirements referring to at least one logicalstorage entity; calculate a configuration for the distributed storagesystem based, at least, on the at least one SLS and the storage-relatedresources parameter data; and automatically allocate at least part ofone of the storage-related resources according to the calculatedconfiguration.

In accordance with certain examples of the presently disclosed subjectmatter, there is yet further provided a distributed storage systemwherein the UDSP agent is further configured to:

receive dynamic behavior parameters data relating to dynamic behavior ofthe distributed storage system; upon at least one SLS being breached,calculate a reconfiguration for the distributed storage system, based,at least, on the at least one SLS, the storage-related resourcesparameter data and the dynamic behavior parameter data; andautomatically allocate at least part of one of the storage-relatedresources according to the calculated reconfiguration.

In accordance with an aspect of the presently disclosed subject matter,there is yet further provided a distributed storage system comprising:an infrastructure layer including interconnected computer nodes,wherein: each one of the interconnected computer nodes comprising atleast one processing resource configured to execute a UnifiedDistributed Storage Platform (UDSP) agent; at least one of theinterconnected computer nodes comprising one or more storage-relatedresources; the UDSP agent is configured to: receive a task comprising atleast one assignment; calculate grades for at least one of theassignments in respect of at least one of the interconnected computernodes, such that each grade being indicative of a suitability of arespective computer node of the interconnected computer nodes to executea respective assignment of the assignments while meeting at least oneService Level Specification (SLS) requirement, the grade is calculatedalso based on parameters data relating to one or more storage relatedresources connected to the respective computer node, if any;

execute one or more of the assignments or route the task to a moresuitable computer node of the infrastructure layer, based on thecalculated grades; calculate grades for assignments of following tasksin respect of at least one modified interconnected computer node of anupdated infrastructure; the updated infrastructure layer is created inresponse to a modification of at least one interconnected computer node;the modification including at least one of (i) at least one newstorage-related resource is connected to the respective node (ii) atleast one existing storage-related resource is disconnected from therespective node (iii) at least one existing storage-related resource ismodified; calculate grades for assignments of following tasks in respectof at least one interconnected computer node having a newstorage-related resources connected thereto or having storage-relatedresources disconnected therefrom, giving rise to an updatedinfrastructure layer; and execute one or more of the assignments offollowing tasks or route the following tasks to a more suitable computernode of the updated infrastructure layer, based on the calculatedgrades.

In accordance with certain examples of the presently disclosed subjectmatter, there is yet further provided a distributed storage systemwherein the UDSP agent is further configured to:

receive dynamic behavior parameters data relating to dynamic behavior ofthe distributed storage system; when at least one SLS requirement isbreached, calculate a reconfiguration for the distributed storagesystem, based, at least, on the at least one SLS requirement, thestorage-related resources parameter data and the dynamic behaviorparameter data; and automatically allocate at least part of one of thestorage-related resources according to the calculated reconfiguration.

In accordance with certain examples of the presently disclosed subjectmatter, there is yet further provided a distributed storage systemwherein while calculating grades for the assignments of following tasks,the updated infrastructure layer is created, and the calculation isperformed in respect of at least one modified interconnected computernode of the created updated infrastructure layer.

In accordance with certain examples of the presently disclosed subjectmatter, there is yet further provided a distributed storage systemwherein while calculating grades for the assignments of following tasks,the updated infrastructure layer is created, and the calculation isperformed in respect of at least one interconnected computer node of thecreated updated infrastructure layer.

In accordance with certain examples of the presently disclosed subjectmatter, there is yet further provided a distributed storage systemwherein the updated infrastructure is created dynamically.

In accordance with certain examples of the presently disclosed subjectmatter, there is yet further provided a distributed storage systemwherein the one or more storage-related resources include at least onestorage-related resource of the following storage-related resourcecategories: cache resources, data storage resources and networkresources.

In accordance with an aspect of the presently disclosed subject matter,there is yet further provided a computer node configured to beingconnected to an infrastructure layer including interconnected computernodes, at least one of the interconnected computer nodes comprising oneor more storage-related resources, the computer node comprising: atleast one processing resource configured to execute a UnifiedDistributed Storage Platform (UDSP) agent, wherein the UDSP agent isconfigured to: receive a task comprising at least one assignment;calculate grades for at least one of the assignments in respect of atleast one of the interconnected computer nodes, such that each gradebeing indicative of a suitability of a respective computer node of theinterconnected computer nodes to execute a respective assignment of theassignments while meeting at least one Service Level Specification (SLS)requirement, the grade is calculated also based on parameters datarelating to one or more storage related resources connected to therespective computer node, if any; execute one or more of the assignmentsor route the task to a more suitable computer node of the infrastructurelayer, based on the calculated grades; calculate grades for assignmentsof following tasks in respect of at least one modified interconnectedcomputer node of an updated infrastructure; the updated infrastructurelayer is created in response to a modification of at least oneinterconnected computer node; the modification including at least one of(i) at least one new storage-related resource is connected to therespective node (ii) at least one existing storage-related resource isdisconnected from the respective node (iii) at least one existingstorage-related resource is modified; calculate grades for assignmentsof following tasks in respect of at least one interconnected computernode having a new storage-related resources connected thereto or havingstorage-related resources disconnected therefrom, giving rise to anupdated infrastructure layer; and execute one or more of the assignmentsof following tasks or route the following tasks to a more suitablecomputer node of the updated infrastructure layer, based on thecalculated grades.

In accordance with certain examples of the presently disclosed subjectmatter, there is yet further provided a computer node system wherein theUDSP agent is further configured to:

receive dynamic behavior parameters data relating to dynamic behavior ofthe storage system;when at least one SLS requirement is breached, calculate areconfiguration for the distributed storage system, based, at least, onthe at least one SLS requirement, the storage-related resourcesparameter data and the dynamic behavior parameter data; andautomatically allocate at least part of one of the storage-relatedresources according to the calculated reconfiguration.

In accordance with certain examples of the presently disclosed subjectmatter, there is yet further provided a computer node system whereinwhile calculating grades for the assignments of following tasks, theupdated infrastructure layer is created, and the calculation isperformed in respect of at least one modified interconnected computernode of the created updated infrastructure layer.

In accordance with certain examples of the presently disclosed subjectmatter, there is yet further provided a computer node system whereinwhile calculating grades for the assignments of following tasks, theupdated infrastructure layer is created, and the calculation isperformed in respect of at least one interconnected computer node of thecreated updated infrastructure layer.

In accordance with certain examples of the presently disclosed subjectmatter, there is yet further provided a computer node system wherein theupdated infrastructure is created dynamically.

In accordance with certain examples of the presently disclosed subjectmatter, there is yet further provided a computer node system wherein theone or more storage-related resources include at least onestorage-related resource of the following storage-related resourcecategories: cache resources, data storage resources and networkresources.

In accordance with an aspect of the presently disclosed subject matter,there is yet further provided a method of operating a computer nodeconfigured to being connected to an infrastructure layer includinginterconnected computer nodes, at least one of the interconnectedcomputer nodes comprising one or more storage-related resources, themethod comprising:

receiving a task comprising at least one assignment; calculating gradesfor at least one of the assignments in respect of at least one of theinterconnected computer nodes, such that each grade being indicative ofa suitability of a respective computer node of the interconnectedcomputer nodes to execute a respective assignment of the assignmentswhile meeting at least one Service Level Specification (SLS)requirement, the grade is calculated also based on parameters datarelating to one or more storage related resources connected to therespective computer node, if any; executing one or more of theassignments or routing the task to a more suitable computer node of theinfrastructure layer, based on the calculated grades; calculating gradesfor assignments of following tasks in respect of at least one modifiedinterconnected computer node of an updated infrastructure layer; theupdated infrastructure layer is created in response to a modification ofat least one interconnected computer node; the modification including atleast one of (i) at least one new storage-related resource is connectedto the respective node (ii) at least one existing storage-relatedresource is disconnected from the respective node (iii) at least oneexisting storage-related resource is modified; calculating grades forassignments of following tasks in respect of at least one interconnectedcomputer node having a new storage-related resources connected theretoor having storage-related resources disconnected therefrom, giving riseto an updated infrastructure layer; and executing one or more of theassignments of following tasks or routing the following tasks to a moresuitable computer node of the updated infrastructure layer, based on thecalculated grades.

In accordance with certain examples of the presently disclosed subjectmatter, there is yet further provided a method further comprisingreceiving dynamic behavior parameters data relating to dynamic behaviorof the storage system; when at least one SLS requirement is breached,calculating a reconfiguration for the distributed storage system, based,at least, on the at least one SLS requirement, the storage-relatedresources parameter data and the dynamic behavior parameter data; andautomatically allocating at least part of one of the storage-relatedresources according to the calculated reconfiguration.

In accordance with certain examples of the presently disclosed subjectmatter, there is yet further provided a method wherein while calculatinggrades for the assignments of following tasks, the updatedinfrastructure layer is created, and the calculating is performed inrespect of at least one modified interconnected computer node of thecreated updated infrastructure layer.

In accordance with certain examples of the presently disclosed subjectmatter, there is yet further provided a method wherein while calculatinggrades for the assignments of following tasks, the updatedinfrastructure layer is created, and the calculating is performed inrespect of at least one interconnected computer node of the createdupdated infrastructure layer.

In accordance with certain examples of the presently disclosed subjectmatter, there is yet further provided a method wherein the updatedinfrastructure is created dynamically.

In accordance with certain examples of the presently disclosed subjectmatter, there is yet further provided a method wherein the one or morestorage-related resources include at least one storage-related resourceof the following storage-related resource categories: cache resources,data storage resources and network resources.

In accordance with an aspect of the presently disclosed subject matter,there is yet further provided a computer node configured to beingconnected to an infrastructure layer of a distributed storage system,the infrastructure layer including interconnected computer nodes, thecomputer node comprising: at least one processing resource configured toexecute a Unified Distributed Storage Platform (UDSP) agent, wherein theUDSP agent is configured to:

receive at least one Service Level Specification (SLS) comprisinguser-defined storage requirements referring to at least one logicalstorage entity, and storage-related resources parameters data relatingto one or more storage-related resources connected to the interconnectedcomputer nodes; calculate a configuration for the distributed storagesystem based, at least, on the at least one SLS and said storage-relatedresources parameter data;automatically allocate at least part of one of the storage-relatedresources according to the calculated configuration; receive dynamicbehavior parameters data relating to dynamic behavior of the distributedstorage system; upon at least one SLS being breached, calculate areconfiguration for the distributed storage system, based, at least, onthe at least one SLS, the storage-related resources parameter data andthe dynamic behavior parameter data; and automatically allocate at leastpart of one of the storage-related resources according to the calculatedreconfiguration.

In accordance with certain examples of the presently disclosed subjectmatter, there is yet further provided a computer node wherein the UDSPagent is further configured to: receive a task comprising at least oneassignment; calculate grades for at least one of the assignments inrespect of at least one of the interconnected computer nodes, such thateach grade being indicative of a suitability of a respective computernode of the interconnected computer nodes to execute a respectiveassignment of the assignments while meeting at least one user-definedstorage-related requirement of the SLS, the grade is calculated alsobased on parameters data relating to one or more storage-relatedresources connected to the respective computer node, if any; execute oneor more of the assignments or route the task to a more suitable computernode, based on the calculated grades; calculate grades for assignmentsof following tasks in respect of at least one added interconnectedcomputer node of an updated infrastructure layer; the updatedinfrastructure layer is created in response to adding at least oneadditional interconnected computer node thereto; and execute one or moreof the assignments of following tasks or route the following tasks to amore suitable computer node of the updated infrastructure layer, basedon the calculated grades.

In accordance with certain examples of the presently disclosed subjectmatter, there is yet further provided a computer node wherein theconfiguration is calculated by an optimization engine.

In accordance with certain examples of the presently disclosed subjectmatter, there is yet further provided a computer node wherein theoptimization engine uses one or more of the following optimizationtechniques: Linear programming; Simulated annealing; Genetic algorithms.

In accordance with certain examples of the presently disclosed subjectmatter, there is yet further provided a computer node wherein the one ormore optimization techniques uses heuristics or approximates.

In accordance with certain examples of the presently disclosed subjectmatter, there is yet further provided a computer node wherein thestorage requirements include at least one of: location; local protectionlevel; backup retention policy; remote protection level; performancelevels; encryption level; de-duplication; compression; storage method.

In accordance with certain examples of the presently disclosed subjectmatter, there is yet further provided a computer node wherein the one ormore storage-related resources include at least one storage-relatedresource of the following storage-related resource categories: cacheresources, data storage resources and network resources.

In accordance with certain examples of the presently disclosed subjectmatter, there is yet further provided a computer node wherein thestorage-related resources are distributed among at least two locations.

In accordance with certain examples of the presently disclosed subjectmatter, there is yet further provided a computer node wherein theconfiguration includes over committing the storage system resources.

In accordance with certain examples of the presently disclosed subjectmatter, there is yet further provided a computer node wherein the UDSPagent is further configured, in response to a failure to determine theconfiguration, to provide a user with a failure notification or with arecommendation indicative of an addition of at least one additionalstorage-related resource which will allow successful calculation of aconfiguration.

In accordance with an aspect of the presently disclosed subject matter,there is yet further provided a method of operating a computer nodeconfigured to being connected to an infrastructure layer includinginterconnected computer nodes, at least one of the interconnectedcomputer nodes comprising one or more storage-related resources, themethod comprising:

receiving at least one Service Level Specification (SLS) comprisinguser-defined storage requirements referring to at least one logicalstorage entity, and storage-related resources parameters data relatingto one or more storage-related resources connected to the interconnectedcomputer nodes; calculating a configuration for the distributed storagesystem based, at least, on the at least one SLS and the storage-relatedresources parameter data;automatically allocating at least part of one of the storage-relatedresources according to the calculated configuration; receiving dynamicbehavior parameters data relating to dynamic behavior of the distributedstorage system; upon at least one SLS being breached, calculating areconfiguration for the distributed storage system, based, at least, onthe at least one SLS, the storage-related resources parameter data andthe dynamic behavior parameter data; and automatically allocating atleast part of one of the storage-related resources according to thecalculated reconfiguration.

In accordance with certain examples of the presently disclosed subjectmatter, there is yet further provided a method further comprising:receiving a task comprising at least one assignment; calculating gradesfor at least one of the assignments in respect of at least one of theinterconnected computer nodes, such that each grade being indicative ofa suitability of a respective computer node of the interconnectedcomputer nodes to execute a respective assignment of the assignmentswhile meeting at least one Service Level Specification (SLS)requirement, the grade is calculated also based on parameters datarelating to one or more storage-related resources connected to therespective computer node, if any; executing one or more of theassignments or route the task to a more suitable computer node, based onthe calculated grades; calculating grades for assignments of followingtasks in respect of at least one added interconnected computer node ofan updated infrastructure layer; the updated infrastructure layer iscreated in response to adding at least one additional interconnectedcomputer node thereto; and executing one or more of the assignments offollowing tasks or routing the following tasks to a more suitablecomputer node of the updated infrastructure layer, based on thecalculated grades.

In accordance with certain examples of the presently disclosed subjectmatter, there is yet further provided a method wherein the calculating aconfiguration is performed by an optimization engine.

In accordance with certain examples of the presently disclosed subjectmatter, there is yet further provided a method wherein the optimizationengine uses one or more of the following optimization techniques: Linearprogramming; Simulated annealing; Genetic algorithms.

In accordance with certain examples of the presently disclosed subjectmatter, there is yet further provided a method wherein the one or moreoptimization techniques uses heuristics or approximates.

In accordance with certain examples of the presently disclosed subjectmatter, there is yet further provided a method wherein the storagerequirements include at least one of: location; local protection level;backup retention policy; remote protection level; performance levels;encryption level; de-duplication; compression; storage method.

In accordance with certain examples of the presently disclosed subjectmatter, there is yet further provided a method wherein the one or morestorage-related resources include at least one storage-related resourceof the following storage-related resource categories: cache resources,data storage resources and network resources.

In accordance with certain examples of the presently disclosed subjectmatter, there is yet further provided a method wherein thestorage-related resources are distributed among at least two locations.

In accordance with certain examples of the presently disclosed subjectmatter, there is yet further provided a method wherein the configurationincludes over committing the storage system resources.

In accordance with certain examples of the presently disclosed subjectmatter, there is yet further provided a method further comprising: inresponse to a failure to determine the configuration, providing a userwith a failure notification or with a recommendation indicative of anaddition of at least one additional resource which will allow successfulcalculation of a configuration.

In accordance with an aspect of the presently disclosed subject matter,there is yet further provided a distributed storage system comprising:an infrastructure layer including interconnected computer nodes,wherein: each one of the interconnected computer nodes comprising atleast one processing resource configured to execute a UnifiedDistributed Storage Platform (UDSP) agent; wherein the UDSP agent isconfigured to: receive at least one Service Level Specification (SLS)comprising user-defined storage requirements referring to at least onelogical storage entity, and storage-related resources parameters datarelating to one or more storage-related resources connected to theinterconnected computer nodes; calculate a configuration for thedistributed storage system based, at least, on the at least one SLS andthe storage-related resources parameter data; automatically allocate atleast part of one of the storage-related resources according to thecalculated configuration; receive dynamic behavior parameters datarelating to dynamic behavior of the distributed storage system; upon atleast one SLS being breached, calculate a reconfiguration for thedistributed storage system, based, at least, on the at least one SLS,said storage-related resources parameter data and the dynamic behaviorparameter data; and automatically allocate at least part of one of thestorage-related resources according to the calculated reconfiguration.

In accordance with certain examples of the presently disclosed subjectmatter, there is yet further provided a distributed storage systemwherein the UDSP agent is further configured to:

receive a task comprising at least one assignment; calculate grades forat least one of the assignments in respect of at least one of theinterconnected computer nodes, such that each grade being indicative ofa suitability of a respective computer node of the interconnectedcomputer nodes to execute a respective assignment of the assignmentswhile meeting at least one user-defined storage requirement of the SLS,the grade is calculated also based on parameters data relating to one ormore storage-related resources connected to the respective computernode, if any; execute one or more of the assignments or route the taskto a more suitable computer node, based on the calculated grades;calculate grades for assignments of following tasks in respect of atleast one added interconnected computer node of an updatedinfrastructure layer; the updated infrastructure layer is created inresponse to adding at least one additional interconnected computer nodethereto; and execute one or more of the assignments of following tasksor route the following tasks to a more suitable computer node of theupdated infrastructure layer, based on the calculated grades.

In accordance with certain examples of the presently disclosed subjectmatter, there is yet further provided a distributed storage systemwherein the configuration is calculated by an optimization engine.

In accordance with certain examples of the presently disclosed subjectmatter, there is yet further provided a distributed storage systemwherein the optimization engine uses one or more of the followingoptimization techniques: Linear programming; Simulated annealing;Genetic algorithms.

In accordance with certain examples of the presently disclosed subjectmatter, there is yet further provided a distributed storage systemwherein the one or more optimization techniques uses heuristics orapproximates.

In accordance with certain examples of the presently disclosed subjectmatter, there is yet further provided a distributed storage systemwherein the storage requirements include at least one of: location;local protection level; backup retention policy; remote protectionlevel; performance levels; encryption level; de-duplication;compression; storage method.

In accordance with certain examples of the presently disclosed subjectmatter, there is yet further provided a distributed storage systemwherein the one or more storage-related resources include at least onestorage-related resource of the following storage-related resourcecategories: cache resources, data storage resources and networkresources.

In accordance with certain examples of the presently disclosed subjectmatter, there is yet further provided a distributed storage systemwherein the storage-related resources are distributed among at least twolocations.

In accordance with certain examples of the presently disclosed subjectmatter, there is yet further provided a distributed storage systemwherein the configuration includes over committing the storage systemresources.

In accordance with certain examples of the presently disclosed subjectmatter, there is yet further provided a distributed storage systemwherein the UDSP agent is further configured, in response to a failureto determine the configuration, to provide a user with a failurenotification or with a recommendation indicative of an addition of atleast one additional resource which will allow successful calculation ofa configuration.

In accordance with an aspect of the presently disclosed subject matter,there is yet further provided a distributed storage system comprising:an infrastructure layer including interconnected computer nodes,wherein: each one of the interconnected computer nodes comprising atleast one processing resource configured to execute a UnifiedDistributed Storage Platform (UDSP) agent; wherein the UDSP agent isconfigured to: receive at least one Service Level Specification (SLS)comprising user-defined storage requirements referring to at least onelogical storage entity, and storage-related resources parameters datarelating to one or more storage-related resources connected to theinterconnected computer nodes; calculate a configuration for thedistributed storage system based, at least, on the at least one SLS andthe storage-related resources parameter data; and automatically allocateat least part of one of the storage-related resources according to thecalculated configuration.

In accordance with an aspect of the presently disclosed subject matter,there is yet further provided a computer node configured to beingconnected to an infrastructure layer of a distributed storage system,the infrastructure layer including interconnected computer nodes, thecomputer node comprising: at least one processing resource configured toexecute a Unified Distributed Storage Platform (UDSP) agent, wherein theUDSP agent is configured to:

receive at least one Service Level Specification (SLS) comprisinguser-defined storage requirements referring to at least one logicalstorage entity, and storage-related resources parameters data relatingto one or more storage-related resources connected to the interconnectedcomputer nodes; calculate a configuration for the distributed storagesystem based, at least, on the at least one SLS and the storage-relatedresources parameter data; andautomatically allocate at least part of one of the storage-relatedresources according to the calculated configuration.

In accordance with an aspect of the presently disclosed subject matter,there is yet further provided a method of operating a computer nodeconfigured to being connected to an infrastructure layer of adistributed storage system, the infrastructure layer includinginterconnected computer nodes, the method comprising: receiving at leastone Service Level Specification (SLS) comprising user-defined storagerequirements referring to at least one logical storage entity, andstorage-related resources parameters data relating to one or morestorage-related resources connected to the interconnected computernodes; calculating a configuration for the storage system based, atleast, on the at least one SLS and the storage-related resourcesparameter data; and automatically allocating at least part of one of thestorage-related resources according to the calculated configuration.

In accordance with an of the presently disclosed subject matter, thereis yet further provided a distributed storage system comprising: aninfrastructure layer including interconnected computer nodes, wherein:each one of the computer nodes comprising at least one processingresource configured to execute a Unified Distributed Storage Platform(UDSP) agent; at least one of the interconnected computer nodescomprising one or more other storage-related resources; the UDSP agentis configured to: receive a task comprising at least one assignment;calculate grades for at least one of the assignments in respect of atleast one of the interconnected computer nodes, such that each gradebeing indicative of a suitability of a respective computer node of theinterconnected computer nodes to execute a respective assignment of theassignments while meeting at least one Service Level Specification (SLS)requirement; and execute one or more of the assignments or route thetask to a more suitable computer node of the infrastructure layer, basedon the calculated grades.

In accordance with an aspect of the presently disclosed subject matter,there is yet further provided a computer node configured to beingconnected to an infrastructure layer including interconnected computernodes comprising: at least one processing resource configured to executea Unified Distributed Storage Platform (UDSP) agent, wherein the UDSPagent is configured to: receive a task comprising at least oneassignment; calculate grades for at least one of the assignments inrespect of at least one other computer node connected to theinfrastructure layer and comprising one or more storage-relatedresources, such that each grade being indicative of a suitability of arespective computer node of the interconnected computer nodes to executea respective assignment of the assignments while meeting at least oneService Level Specification (SLS) requirement; and execute one or moreof the assignments or route the task to a more suitable computer node,based on the calculated grades.

In accordance with an aspect of the presently disclosed subject matter,there is yet further provided a method of operating a computer nodeconfigured to being connected to an infrastructure layer includinginterconnected computer nodes, the method comprising: receiving a taskcomprising at least one assignment; calculating grades for at least oneof the assignments in respect of at least one other computer nodeconnected to the infrastructure layer and comprising one or morestorage-related resources, such that each grade being indicative of asuitability of a respective computer node of the interconnected computernodes to execute a respective assignment of the assignments whilemeeting at least one Service Level Specification (SLS) requirement; andexecuting one or more of the assignments or routing the task to a moresuitable computer node, based on the calculated grades.

In accordance with an aspect of the presently disclosed subject matter,there is yet further provided a distributed storage system comprisinginterconnected computer nodes; each one of the computer nodes comprisingat least one processing resource configured to execute a UnifiedDistributed Storage Platform (UDSP) agent; at least one of the computernodes comprising one or more resources including at least one cacheresource configured to cache objects and having correspondingcache-related parameters; at least one UDSP agent of a respectivecomputer node having the at least one cache resource is configured to:monitor cache-related parameters of the at least one cache resourceconnected to the respective computer node, for determining whether thecache-related parameters meet at least one first SLS criteria; and inthe case the at least one first SLS criteria is not met, initiatehandoff of at least part of one or more cache object spaces of the atleast one cache resource to at least one other computer node, whichafter receiving the at least part of one or more cache object spaces,its cache-related parameters meet at least one second SLS criteria.

In accordance with certain examples of the presently disclosed subjectmatter, there is yet further provided a distributed storage system,wherein each UDSP agent of the respective computer node having the atleast one cache resource is further configured to: monitor that thecache-related parameters meet at least one third SLS criteria indicativeof underutilization of the corresponding cache resources; and in thecase of meeting the at least one third SLS criteria, initiate handoff ofat least part of one or more cache object spaces of the at least onecache resource to the at least one other computer node, which afterreceiving the at least part of one or more cache object spaces, itscache-related parameters meet the at least one second SLS criteria.

In accordance with certain examples of the presently disclosed subjectmatter, there is yet further provided a distributed storage system,wherein first computer nodes having respective UDSP data repositories,such that a UDSP data repository of a first computer node includes dataon cache-related parameters corresponding to one or more cache resourcesof second computer nodes; the UDSP agent of the first computer node isconfigured to: monitor the cache-related parameters according to dataextracted from its UDSP data repository in respect of one or more cacheresources of at least one second computer node, for determining whetherthe cache-related parameters of a respective second computer node meetat least one first SLS criteria; and in the case the at least one firstSLS criteria is not met, initiate a message to the respective secondcomputer node including at least one of the cache-related parameters ofthe respective second computer node as extracted from the UDSP datarepository of the first computer node, thereby allowing the respectivesecond computer node to determine if the cache-related parametersreceived from the first computer node are preferable over thecache-related parameters of the second computer node.

In accordance with certain examples of the presently disclosed subjectmatter, there is yet further provided a distributed storage systemwherein the first computer node has the at least one cache resourceconnected thereto.

In accordance with certain examples of the presently disclosed subjectmatter, there is yet further provided a distributed storage systemwherein the UDSP data repository of the first computer node includesdata also on self cache-related parameters corresponding to cacheresources of the first computer node.

In accordance with certain examples of the presently disclosed subjectmatter, there is yet further provided a distributed storage systemwherein the UDSP agent is further configured, in response to a failureto initiate the handoff, to provide a user with a failure notificationor with a recommendation indicative of an addition of at least oneadditional cache resource allowing successful initiation of a handoff.

In accordance with certain examples of the presently disclosed subjectmatter, there is yet further provided a distributed storage system,wherein gateway resources or client servers, having respective UDSP datarepositories, such that a UDSP data repository of a gateways resource ora client server includes data on cache-related parameters correspondingto one or more cache resources of computer nodes; the UDSP agent of thegateways resource or the client server is further configured to: monitorthe cache-related parameters according to data extracted from its UDSPdata repository in respect of one or more cache resources of at leastone computer node, for determining whether the cache-related parametersof a respective computer node meet at least one first SLS criteria; andin the case the at least one first SLS criteria is not met, initiate amessage to the respective computer node including at least one of thecache-related parameters of the respective computer node as extractedfrom the UDSP data repository of the gateways resource or the clientserver, thereby allowing the respective computer node to determine ifthe cache-related parameters received from the gateways resource or theclient server are more preferable over the cache-related parameters ofthe computer node.

In accordance with certain examples of the presently disclosed subjectmatter, there is yet further provided a distributed storage system,wherein the UDSP agent of the respective computer node is furtherconfigured to: create a post-handoff cache mapping indicative of newlocations of the at least part of one or more cache object spaces; sendthe post-handoff cache mapping to the other computer node and to one ormore client servers associated with the at least part of one or morecache object spaces, if any; and transfer ownership of the at least partof one or more cache object spaces to the other computer node.

In accordance with certain examples of the presently disclosed subjectmatter, there is yet further provided a distributed storage systemwherein the UDSP agent of the respective computer node is furtherconfigured to: receive a request relating to an object within thepost-handoff cache mapping, during the handoff; if the object is notowned by the respective computer node according to the post-handoffcache mapping and the respective computer node does not have ownershipof the object, relay the request to the other computer node.

In accordance with an aspect of the presently disclosed subject matter,there is yet further provided a computer node configured to beingconnected to an infrastructure layer including interconnected computernodes, the computer node comprising: at least one cache resourceconfigured to cache objects and having corresponding cache-relatedparameters;

at least one processing resource configured to execute a UnifiedDistributed Storage Platform (UDSP) agent, wherein the UDSP agent isconfigured to: monitor cache-related parameters of the at least onecache resource connected to the computer node, for determining whetherthe cache-related parameters meet at least one first SLS criteria; andin the case the at least one first SLS criteria is not met, initiatehandoff of at least part of one or more cache object spaces of the atleast one cache resource to at least one other computer node of theinterconnected computer nodes, which after receiving the at least partof one or more cache object spaces, its cache-related parameters meet atleast one second SLS criteria.

In accordance with certain examples of the presently disclosed subjectmatter, there is yet further provided a computer node, wherein the UDSPagent is further configured to: monitor that the cache-relatedparameters meet at least one third SLS criteria indicative ofunderutilization of the corresponding cache resources; and in the caseof meeting the at least one third SLS criteria, initiate handoff of atleast part of one or more cache object spaces of the at least one cacheresource to the at least one other computer node of the interconnectedcomputer nodes, which after receiving the at least part of one or morecache object spaces, its cached parameters meet the at least one secondSLS criteria.

In accordance with certain examples of the presently disclosed subjectmatter, there is yet further provided a computer node, wherein thecomputer node further comprises a UDSP data repository including data oncache-related parameters corresponding to one or more cache resources ofat least one other computer node of the interconnected computer nodes;and wherein the UDSP agent is further configured to: monitor thecache-related parameters according to data extracted from its UDSP datarepository in respect of the one or more cache resources of at least oneother computer node, for determining whether the cache-relatedparameters of a respective other computer node meet at least one firstSLS criteria; and in the case the at least one first SLS criteria is notmet, initiate a message to the respective other computer node includingat least one of the cache-related parameters of the respective othercomputer node as extracted from the UDSP data repository, therebyallowing the respective other computer node to determine if thecache-related parameters received from the computer node are preferableover the cache-related parameters of the other computer node.

In accordance with certain examples of the presently disclosed subjectmatter, there is yet further provided a computer node wherein the UDSPdata repository includes data also on self cache-related parameterscorresponding to cache resources of the computer node.

In accordance with certain examples of the presently disclosed subjectmatter, there is yet further provided a computer node wherein the UDSPagent is further configured, in response to a failure to initiate thehandoff, to provide a user with a failure notification or with arecommendation indicative of an addition of at least one additionalcache resource allowing successful initiation of a handoff.

In accordance with certain examples of the presently disclosed subjectmatter, there is yet further provided a computer node, wherein the UDSPagent is further configured to: create a post-handoff cache mappingindicative of new locations of the at least part of one or more cacheobject spaces; send the post-handoff cache mapping to the other computernode and to one or more client servers associated with the at least partof one or more cache object spaces, if any; and transfer ownership ofthe at least part of one or more cache object spaces to the othercomputer node.

In accordance with certain examples of the presently disclosed subjectmatter, there is yet further provided a computer node wherein the UDSPagent is further configured to: receive a request relating to an objectwithin the post-handoff cache mapping, during the handoff; if the objectis not owned by the respective computer node according to thepost-handoff cache mapping and the respective computer node does nothave ownership of the object, relay the request to the other computernode.

In accordance with an aspect of the presently disclosed subject matter,there is yet further provided a method of operating a computer nodehaving at least one cache resource connected thereto, and configured tobeing connected to an infrastructure layer including interconnectedcomputer nodes, the method comprising: monitoring cache-relatedparameters of the at least one cache resource having correspondingcache-related parameters and configured to cache objects, fordetermining whether the cache-related parameters meet at least one firstSLS criteria; and in the case the at least one first SLS criteria is notmet, initiating handoff of at least part of one or more cache objectspaces of the at least one cache resource to at least one other computernode of the interconnected computer nodes, which after receiving the atleast part of one or more cache object spaces, its cache-relatedparameters meet at least one second SLS criteria.

In accordance with certain examples of the presently disclosed subjectmatter, there is yet further provided a method, further comprising:monitoring that the cache-related parameters meet at least one third SLScriteria indicative of underutilization of the corresponding cacheresources; and in the case of meeting the at least one third SLScriteria, initiating handoff of at least part of one or more cacheobject spaces of the at least one cache resource to the at least oneother computer node of the interconnected computer nodes, which afterreceiving the at least part of one or more cache object spaces, itscached parameters meet the at least one second SLS criteria.

In accordance with certain examples of the presently disclosed subjectmatter, there is yet further provided a method, wherein the computernode further comprises a UDSP data repository including data oncache-related parameters corresponding to one or more cache resources ofthe at least one other computer node of the interconnected computernodes; the method further comprising: monitoring the cache-relatedparameters according to data extracted from its UDSP data repository inrespect of one or more cache resources of at least one other computernode, for determining whether the cache-related parameters of arespective other computer node meet at least one first SLS criteria; andin the case the at least one first SLS criteria is not met, initiating amessage to the respective other computer node including at least one ofthe cache-related parameters of the respective other computer node asextracted from the UDSP data repository, thereby allowing the respectiveother computer node to determine if the cache-related parametersreceived from the computer node are preferable over the cache-relatedparameters of the other computer node.

In accordance with certain examples of the presently disclosed subjectmatter, there is yet further provided a method wherein the UDSP datarepository includes data also on self cache-related parameterscorresponding to cache resources of the computer node.

In accordance with certain examples of the presently disclosed subjectmatter, there is yet further provided a method further comprising, inresponse to a failure to initiate the handoff, providing a user with afailure notification or with a recommendation indicative of an additionof at least one additional cache resource allowing successful initiationof a handoff.

In accordance with certain examples of the presently disclosed subjectmatter, there is yet further provided a method, further comprising:creating a post-handoff cache mapping indicative of new locations of theat least part of one or more cache object spaces; sending thepost-handoff cache mapping to the other computer node and to one or moreclient servers associated with the at least part of one or more cacheobject spaces or parts thereof, if any; and

transferring ownership of the at least part of one or more cache objectspaces to the other computer node.

In accordance with certain examples of the presently disclosed subjectmatter, there is yet further provided a method further comprising:receiving a request relating to an object within the post-handoff cachemapping, during the handoff; if the object is not owned by therespective computer node according to the post-handoff cache mapping andthe respective computer node does not have ownership of the object,relaying the request to the other computer node.

BRIEF DESCRIPTION OF FIGURES

In order to understand the presently disclosed subject matter and to seehow it may be carried out in practice, the subject matter will now bedescribed, by way of non-limiting examples only, with reference to theaccompanying drawings, in which:

FIG. 1 schematically illustrates a top-level architecture of aDistributed Storage System including an Infrastructure Layer, accordingto an exemplary embodiment of the invention;

FIG. 2 schematically illustrates a simplified, exemplary system forconfiguring a Distributed Storage System, according to the presentlydisclosed subject matter;

FIG. 3 schematically illustrates a simplified and exemplary flow diagramof an optimization process performed by the objective-based managementsystem, according to the presently disclosed subject matter;

FIG. 4 schematically illustrates a simplified flow diagram of anexemplary operational algorithm of a configuration process performed bythe objective-based management system, according to the presentlydisclosed subject matter;

FIG. 5 is a block diagram schematically illustrating an exemplarycomputer node connected to the Distributed Storage System, according tocertain examples of the presently disclosed subject matter;

FIG. 6 is a flowchart illustrating a sequence of operations carried outfor creating a task, according to certain examples of the presentlydisclosed subject matter;

FIG. 7 is a flowchart illustrating a sequence of operations carried outfor creating an exemplary storage block-write task, according to certainexamples of the presently disclosed subject matter.

FIG. 8 is a flowchart illustrating a sequence of operations carried outfor managing a task received by a UDSP agent, according to certainexamples of the presently disclosed subject matter;

FIG. 9 is a flowchart illustrating a sequence of operations carried outfor grading nodes suitability to execute pending task assignments,according to certain examples of the presently disclosed subject matter;

FIG. 10 is a flowchart illustrating a sequence of operations carried outfor executing pending assignments on a computer node, according tocertain examples of the presently disclosed subject matter

FIG. 11 is a flowchart illustrating a sequence of operations carried outfor managing reconfigurations of Distributed Storage System (DSS),according to certain examples of the presently disclosed subject matter;

FIG. 12 is a flowchart illustrating a sequence of operations carried outfor monitoring local parameters of a computer node and resourcesconnected thereto, according to certain examples of the presentlydisclosed subject matter;

FIG. 13 is a flowchart illustrating a sequence of operations carried outfor detecting and managing resources connected to a computer node,according to certain examples of the presently disclosed subject matter;

FIG. 14 is a flowchart illustrating a sequence of operations carried outfor connecting a new computer node to Distributed Storage System (DSS),according to certain examples of the presently disclosed subject matter;

FIG. 15 is a flowchart illustrating a sequence of operations carried outfor receiving a notification from a remote computer node and updating aUnified Distributed Storage Platform (UDSP) data repository accordingly,according to certain examples of the presently disclosed subject matter;

FIG. 16 is a block diagram schematically illustrating a cache managementmodule, according to certain examples of the presently disclosed subjectmatter;

FIG. 17 is a flowchart illustrating a sequence of operations carried outfor managing local cache resources of a computer node, according tocertain examples of the presently disclosed subject matter;

FIG. 18 is a flowchart illustrating a sequence of operations carried outfor managing remote cache resources of remote computer nodes, accordingto certain examples of the presently disclosed subject matter;

FIG. 19 schematically illustrates various scenarios of distributingcache resources, according to an exemplary embodiment of the invention;

FIG. 20 is a flowchart illustrating a sequence of operations carried outfor performing a cache handoff by a handoff initiator, according tocertain examples of the presently disclosed subject matter;

FIG. 21 is a flowchart illustrating a sequence of operations carried outfor performing a cache handoff by a handoff target, according to certainexamples of the presently disclosed subject matter;

FIG. 22 is a flowchart illustrating a sequence of operations carried outfor handling an object related request received by a handoff initiatorduring handoff, according to certain examples of the presently disclosedsubject matter; and

FIG. 23 is a flowchart illustrating a sequence of operations carried outfor handling an object related request received by a handoff targetduring handoff, according to certain examples of the presently disclosedsubject matter.

DETAILED DESCRIPTION

In the drawings and descriptions set forth, identical reference numeralsindicate those components that are common to different embodiments orconfigurations.

Unless specifically stated otherwise, as apparent from the followingdiscussions, it is appreciated that throughout the specificationdiscussions utilizing terms such as “receiving”, “calculating”,“executing”, “routing”, “monitoring”, “propagating”, “allocating”,“providing” or the like, include action and/or processes of a computerthat manipulate and/or transform data into other data, said datarepresented as physical quantities, e.g. such as electronic quantities,and/or said data representing the physical objects. The term “computer”should be expansively construed to cover any kind of electronic devicewith data processing capabilities, including, by way of non-limitingexample, a personal computer, a server, a computing system, acommunication device, a processor (e.g. digital signal processor (DSP),a microcontroller, a field programmable gate array (FPGA), anapplication specific integrated circuit (ASIC), etc.), any otherelectronic computing device, and or any combination thereof.

The operations in accordance with the teachings herein may be performedby a computer specially constructed for the desired purposes or by ageneral purpose computer specially configured for the desired purpose bya computer program stored in a computer readable storage medium.

As used herein, the phrase “for example,” “such as”, “for instance” andvariants thereof describe non-limiting embodiments of the presentlydisclosed subject matter. Reference in the specification to “one case”,“some cases”, “other cases” or variants thereof means that a particularfeature, structure or characteristic described in connection with theembodiment(s) is included in at least one embodiment of the presentlydisclosed subject matter. Thus the appearance of the phrase “one case”,“some cases”, “other cases” or variants thereof does not necessarilyrefer to the same embodiment(s).

It is appreciated that certain features of the presently disclosedsubject matter, which are, for clarity, described in the context ofseparate embodiments, may also be provided in combination in a singleembodiment. Conversely, various features of the presently disclosedsubject matter, which are, for brevity, described in the context of asingle embodiment, may also be provided separately or in any suitablesub-combination.

In embodiments of the presently disclosed subject matter, fewer, moreand/or different stages than those shown in FIGS. 3, 4, 6-18 and 20-23may be executed. In embodiments of the presently disclosed subjectmatter one or more stages illustrated in FIGS. 3, 4, 6-18 and 20-23 maybe executed in a different order and/or one or more groups of stages maybe executed simultaneously. FIGS. 1, 2, 5 and 19 illustrate a generalschematic of the system architecture in accordance with an embodiment ofthe presently disclosed subject matter. Each module in FIGS. 1, 2, 5 and19 can be made up of any combination of software, hardware and/orfirmware that performs the functions as defined and explained herein.The modules in FIGS. 1, 2, 5 and 19 may be centralized in one locationor dispersed over more than one location. In other embodiments of thepresently disclosed subject matter, the system may comprise fewer, more,and/or different modules than those shown in FIGS. 1, 2, 5 and 19.

Bearing this in mind, attention is drawn to FIG. 1, which schematicallyillustrates a top-level architecture of a Distributed Storage Systemincluding an Infrastructure Layer, according to the presently disclosedsubject matter. According to examples of the presently disclosed subjectmatter, Distributed Storage System (DSS) 200 can comprise one or more ofthe following layers: an Infrastructure Layer 201, a Unified DistributedStorage Platform (UDSP) layer 202, and an API/framework layer 203.

According to some examples of the presently disclosed subject matter,infrastructure layer 201 can include one or more interconnected computernodes 205 (e.g. any type of computer including, inter alia, one or moreprocessing resources such as one or more processing units, one or morememory resources such as a memory, and one or more network interfaces),and in some cases two or more interconnected computer nodes 205, onwhich a more detailed description is provided herein, inter alia withreference to FIG. 5. Infrastructure layer 201 can further include one ormore of the following storage-related resources: (a) data storageresources (e.g. data storage device 204, RAID (redundant array ofindependent disks) 206, DAS (direct attached storage) 208, JBOD (just abunch of drives) 210, network storage appliance 207 (e.g. SAN, NAS,etc.), SSD 213, etc.); (b) cache resources 212 such as memory resources(e.g. RAM, DRAM, etc.), volatile and/or non-volatile, and/or a datastorage resources (e.g. SSD 213) that in some cases can be usedadditionally or alternatively as a cache resource), etc.; (c) networkresources 214; and (d) additional resources providing furtherfunctionality to the DSS 200 and/or enhance its performance (such ascompression accelerator, encryption accelerator 209, Host Bus adapter(HBA) enabling communication with SAN resources, etc.).

In some cases, the resources can include more than one of a same type ofdevice, and/or more than one of a different type of device. A moredetailed description of some of the resources will follow herein.

According to some examples of the presently disclosed subject matter,the computer nodes 205 can be interconnected by a network (e.g. ageneral-purpose network).

In some cases, one or more of the resources of the infrastructure layer201 can be connected to one or more computer nodes 205 directly. In somecases, one or more of the resources of the infrastructure layer 201 canbe comprised within a computer node 205 and form a part thereof. In somecases, one or more of the resources of the infrastructure layer 201 canbe connected (e.g. by a logical connection such as iSCSI 222, etc.) toone or more of the computer nodes 205 by a network (e.g. ageneral-purpose network).

Optionally, the network can be a general-purpose network. Optionally,the network can include a WAN. Optionally, the WAN can be a global WANsuch as, for example, the Internet. Optionally, the network resourcescan interconnect using an IP network infrastructure. Optionally, thenetwork can be a Storage Area Network (SAN). Optionally, the network caninclude storage virtualization. Optionally, the network can include aLAN. Optionally, the network infrastructure can include Ethernet,Infiniband, FC (Fibre Channel) 217, FCoE (Fibre Channel over Ethernet),etc., or any combination of two or more network infrastructures.Optionally, the network can be any type of network known in the art,including a general purpose network and/or a storage network.Optionally, the network can be any network suitable for applying anobjective-based management system for allocating and managing resourceswithin the network, as further detailed herein. Optionally, the networkcan be a combination of any two or more network types (including, interalia, the network types disclosed herein).

According to some examples of the presently disclosed subject matter, atleast one resource of the infrastructure layer 201 (including, interalia, the computer nodes 205, the data storage resources, the cacheresources, the network resources, additional resources connected to acomputer node 205, or any other resources) can be an off-the-shelf,commodity, not purposely-built resource connected to the network and/orto one or more computer nodes 205. It is to be noted that such aresource can be interconnected as detailed herein, irrespective of theresource characteristics such as, for example, manufacturer, size,computing power, capacity, etc. Thus, any resource (including, interalia, the computer nodes 205), irrespective of its manufacturer, whichcan communicate with a computer node 205, can be connected to theinfrastructure layer 201 and utilized by the DSS 200 as further detailedherein. In some cases any number of resources (including, inter alia,the computer nodes 205) can be connected to the network and/or to one ormore computer nodes 205 and utilized by the DSS 200, thus enablingscalability of the DSS 200. In some cases, any number of computer nodes205 can be connected to the network and any number of resources can beconnected to one or more computer nodes 205 and utilized by the DSS 200,thus enabling scalability of the DSS 200. It is to be noted that a moredetailed explanation about the process of connecting new resources(including, inter alia, the computer nodes 205) to the DSS 200 isfurther detailed herein, inter alia with respect to FIG. 5.

Turning to the UDSP layer 202, according to some examples of thepresently disclosed subject matter, it can include one or more UDSPagents 220 that can be installed on (or otherwise associated with orcomprised within) one or more of the computer nodes 205. In some cases,a UDSP agent 220 can be installed on (or otherwise associated with) eachof the computer nodes 205. In some cases, a UDSP agent 220 can beadditionally installed on (or otherwise associated with) one or more ofgateway resources 216 (that can act, inter alia, as protocol convertersas further detailed herein), and in some cases, on each of the gatewayresources 216. In some cases, a UDSP agent 220 can be additionallyinstalled on (or otherwise associated with) one or more of the clientservers 218 (e.g. servers and/or other devices connected to the DSS 200as clients), and in some cases, on each of the client servers 218. It isto be noted that in some cases, client servers 218 can interact with DSS200 directly without a need for any gateway resources 216 that areoptional. It is to be further noted that in some cases there can be adifference in the UDSP agent 220 (e.g. a difference in its functionalityand/or its capability, etc.) according to its installation location orits association (e.g. there can be a difference between a UDSP agent 220installed on, or otherwise associated with, a computer node 205, a UDSPagent 220 installed on, or otherwise associated with, a gatewayresources 216, a UDSP agent 220 installed on, or otherwise associatedwith, a client server 218, etc.).

It is to be noted that a detailed description of the UDSP agents 220 isprovided herein, inter alia with respect to FIG. 5. Having said that, itis to be noted that according to some examples of the presentlydisclosed subject matter, UDSP agents 220 can be configured to controland manage various operations of DSS 200 (including, inter alia,automatically allocating and managing the resources of theInfrastructure Layer 201, handling data-path operations, etc.). In somecases, UDSP agents 220 can be configured to manage a connection of a newcomputer node 205 to the Infrastructure Layer 201 of DSS 200. In somecases, UDSP agents 220 can be configured to detect resources connectedto the computer node 205 on which they are installed and to manage suchresources. As indicated above, a more detailed description of the UDSPagents 220 is provided herein, inter alia with respect to FIG. 5.

In some cases, UDSP layer 202 can include UDSP 225 which includes amanagement system for DSS 200. Optionally, management system processingcan be implemented through one or more UDSP agents 220 installed on thecomputer nodes 205 in Infrastructure Layer 201, or through one or moreUDSP agents 220 installed on a gateway resource 216 or on a clientserver 218 with access to DSS 200 (e.g. directly and/or through gatewayresources 216), or any combination thereof.

Management system can enable a user to perform various management tasks(including, inter alia monitoring and reporting tasks) relating to DSS200, such as, creating new logical storage entities (such as LogicalUnits, Object Stores, file system instances, etc.) that can beassociated with Service Level Specifications (SLSs) (in some cases, eachlogical storage entity is associated with a single SLS), updatinglogical storage entities, granting access permissions of logical storageentities to gateway resources 216 and/or to client servers 218, creatingsnapshots, creating backups, failover to remote site, failback toprimary site, monitoring dynamic behavior of DSS 200, monitoring SLSscompliance, generation of various (e.g. pre-defined and/or user-defined,etc.) reports (e.g. performance reports, resource availability reports,inventory reports, relationship reports indicative of relationshipsbetween computer nodes 205 and other resources, trend reports andforecast reports of various parameters including Key PerformanceIndicators, etc.) referring to different scopes of the DSS 200 (e.g. inthe resolution of the entire DSS 200, certain sites, certain types ofuse such as for a certain SLS, certain resources, etc.), managingvarious alerts provided by DSS 200 (e.g. alerts of failed hardware,etc.), etc. It is to be noted that the above management tasks areprovided as non-limiting examples only. It is to be noted that in somecases, the logical storage entities can be created automatically by DSS200 according to the SLS, as further detailed herein. It is to be notedthat each of the logical storage entities can be associated with one ormore data storage resources.

It is to be noted that throughout the specification, when reference ismade to a user, this can refer to a human operator such as a systemadministrator, or to any type of auxiliary entity. An auxiliary entitycan refer for example to an external application such as an externalmanagement system, including an auxiliary entity that does not requireany human intervention, etc.

In some cases, management system can enable a user to provide DSS 200with user-defined storage requirements defining a service levelspecification (SLS) specifying various requirements that the userrequires the DSS 200 to meet. In some cases, the SLS can be associatedwith a logical storage entity. Optionally, the SLS can includeinformation such as, for example, specifications of one or moregeographical locations where the data is to be stored and/or handled; alocal protection level defining availability, retention, recoveryparameters (e.g. RPO—Recovery Point Objective, RTO—Recovery TimeObjective); a backup retention policy defining for how long informationshould be retained; a remote protection level for disaster recovery (DR)defining one or more remote geographical locations in order to achievespecified availability, retention and recovery goals under variousdisaster scenarios; local and/or remote replication policy; performancelevels (optionally committed) defined using metrics such as IOPS(input/output operations per second), response time, and throughput;encryption requirements; de-duplication requirements; compressionrequirements; a storage method (physical capacity, thincapacity/provisioning), etc.

In some cases, management system can enable management (includingcreation, update and deletion) of various Service Level Groups (SLGs).An SLG is a template SLS that can be shared among multiple logicalstorage entities. An SLG can be a partial SLS (that requiresaugmentation) and/or contain settings that can be overridden. Thus, forexample, an SLG can define various recovery parameters only that can beinherited by various SLSs, each of which can add and/or override SLSparameters.

According to some examples of the presently disclosed subject matter,UDSP 225 can include an automatic management system for allocatingresources and managing the resources in the DSS 200. Optionally, theautomatic management system is an Objective-Based Management System(OBMS) 100 that can be configured to allocate and manage the resourcesin the network, inter alia based on any one of, or any combination of,user-defined requirements defined by one or more service levelspecifications (SLSs), data of various parameters relating to computernodes 205 and/or to resources connected thereto, data of variousparameters that refer to the DSS 200 or parts thereof (e.g. maximalallowed site-level over-commit, maximal allowed overall over-commit,various security parameters, etc.) and data of various parameters thatrefer to the dynamic behavior of the DSS 200 and the environment (e.g.the client servers 218, gateway resources 216, etc.), as furtherdetailed herein, inter alia with respect to FIG. 2 and FIG. 5.Optionally, OBMS 100 processing can be implemented through one or moreUDSP agents 220 installed on one or more of the computer nodes 205 inInfrastructure Layer 201, or through one or more UDSP agents 220installed on a gateway resource 216 or on a client server 218 withaccess to DSS 200 (e.g. directly or through gateway resources 216), orany combination thereof.

According to some examples of the presently disclosed subject matter,API/framework layer 203 includes a plug-in layer which facilitatesaddition of software extensions (plug-ins) to DSS 200. Such plug-ins canbe utilized for example for applying processes to the data, introducingnew functionality and features to DSS 200, interfacing DSS 200 withspecific applications and implementing application-specific tasks (e.g.storage related tasks, etc.), implementing various resource specificdrivers, introducing new SLS parameters and/or parameter group/s (e.g.in relation to a plug-in functionality and/or goals), implementingmanagement functionality, etc. In some cases, the plug-in layer can alsoinclude drivers associated with various hardware components (e.g.encryption cards, etc.).

In some cases the plug-ins can be deployed on one or more UDSP agents220. In some cases, the plug-ins can be deployed on one or more UDSPagents 220 for example, according to the plug-in specifications (e.g. asoftware encryption plug-in can be installed on any UDSP agent 220),according to various resources connected to a computer node 205 and/orto a gateway resource 216 and/or to a client server 218 on which a UDSPagent 220 is installed (e.g. a hardware accelerator plug-in can beautomatically deployed on each UDSP agent 220 associated with a computernode 205 that is associated with such a hardware accelerator), accordingto a decision of the automatic management system (e.g. OBMS 100), oraccording to a selection of a system administrator, etc. In some casesthe plug-ins can be deployed automatically, e.g. by the automaticmanagement system (e.g. OBMS 100) and/or by the computer nodes 205.Optionally, the software extensions can include data processing plug-ins226 such as, for example, a data deduplication plug-in enabling forexample deduplication of data stored on DSS 200, a data encryptionplug-in enabling for example encryption/decryption of data stored on DSS200, a data compression plug-in enabling for examplecompression/decompression of data stored on DSS 200, etc. Optionally,the software extensions can include storage feature plug-ins 228 suchas, for example, a content indexing plug-in enabling for exampleindexing of data stored on DSS 200, a snapshot management plug-inenabling management of snapshots of data stored on DSS 200, a tieringmanagement plug-in enabling for example tiering of data stored on DSS200, a disaster recovery plug-in enabling for example management ofprocess, policies and procedures related to disaster recovery, acontinuous data protection plug-in enabling for example management ofcontinuous or real time backup of data stored on DSS 200, etc.Optionally, the software extensions can include application plug-ins 230such as, for example a database plug-in enabling for exampleaccelerating query processing, a management plug-in 233 enabling forexample performance of various DSS 200 management tasks and otherinteractions with users, client servers 218, and other entitiesconnected to DSS 200, and other suitable application plug-ins.

As indicated herein, in some cases, a plug-in can introduce new SLSparameters and/or parameter group(s) (e.g. in relation to a plug-infunctionality and/or goals). In such cases, according to the plug-infunctionality, respective SLS parameters and/or parameter group(s) canbe introduced to DSS 200. Such introduced SLS parameters can be used inorder to set plug-in related requirements, e.g. by a user and/orautomatically by the automatic management system (e.g. OBMS 100), etc.

In some cases, the software extensions can be stored on one of thecomputer nodes 205 or distributed on more than one computer node 205. Insome cases, the software extensions can be stored on one or more datastorage resources connected to one or more computer nodes 205. In somecases, the software extensions can be stored in a virtual softwareextensions library that can be shared by the UDSP agents 220.

In some cases, the software extensions can be managed, automaticallyand/or manually (e.g. by a system administrator). Such management cansometimes be performed by utilizing the management plug-in 233. In suchcases, management plug-in 233 can enable addition/removal of softwareextension to/from DSS 200, addition/removal of various softwareextensions to/from one or more UDSP agents 220, etc.

Following the description of the top-level architecture of DSS 200, adetailed description of a DSS 200 configuration process that can beperformed by Objective Based Management System (OBMS) 100 is herebyprovided. For this purpose, attention is now drawn to FIG. 2,illustrating a simplified, exemplary system for configuring aDistributed Storage System 200, according to the presently disclosedsubject matter. For this purpose, OBMS 100 can be configured, interalia, to automatically allocate and manage resources in theInfrastructure Layer 201. OBMS 100 can include an Input Module 102, oneor more Processors 104, and an Output Module 106.

In some cases, input Module 102 can be configured to receive input data.Such input data can include, inter alia, any one of, or any combinationof, user-defined storage requirements defined by one or more servicelevel specifications (SLSs), definitions of one or more logical storageentities, data of various parameters relating to computer nodes 205and/or to resources connected thereto (including storage-relatedresources, also referred to as storage-related resources data), data ofvarious parameters that refer to the DSS 200 or parts thereof (e.g.maximal allowed site-level over-commit, maximal allowed overallover-commit, various security parameters, etc.), data of variousparameters relating to dynamic behavior (dynamic behavior parameterdata) of the DSS 200 and the environment (e.g. the client servers 218,gateway resources 216, etc.), etc.

In some cases, user-defined requirements can define one or more servicelevel specifications (SLSs) specifying various requirements that one ormore users require the DSS 200 and/or one or more logical storageentities to meet.

In some cases, the data of various parameters relating to dynamicbehavior of the DSS 200 and the environment (dynamic behavior parameterdata) can include various parameters data indicative of the currentstate of one or more of the DSS 200 components (including the computernodes 205 and the resources connected thereto). Such data can includedata of presence and/or loads and/or availability and/or faults and/orcapabilities and/or response time(s) and/or connectivity and/or cost(s)(e.g. costs of network links, different types of data storage resources)and/or any other data relating to one or more of the resources,including data relating to one or more computer nodes 205, one or moregateway resources 216, one or more client servers 218, etc. In somecases, such data can include, inter alia, various statistical data.

In some cases, the data of various parameters relating to computer nodes205 and/or to resources connected thereto (including storage-relatedresources, also referred to as storage-related resources data) caninclude data of various parameters indicative of the resources of theDSS 200, including hardware resources, including storage-relatedresources, such as, for example:

a. parameters relating to a data storage resource, (e.g. for each of theits hard drives):

-   -   1. Hard drive category parameters (e.g. hard drive size,        interface (e.g. SAS, SATA, FC, Ultra-SCSI, etc.), cache size,        special features (e.g. on-drive encryption, etc.), etc.);    -   2. Hard drive performance parameters (e.g. response time,        average latency, random seek time, data transfer rate, etc.);    -   3. Hard drive power consumption;    -   4. Hard drive reliability parameters (e.g. Mean Time Between        Failure (MTBF), Annual Failure Rate (AFR), etc.).        b. computer node 205 parameters:    -   1. Number of CPUs and cores per CPU.    -   2. Performance parameters of each CPU and/or core, such as        frequency, L2 and L3 cache sizes.    -   3. Architecture (e.g. does the CPU and/or core support 64-bit        computing, is it little-endian or big-endian)    -   4. Support for certain instruction sets (e.g. AES-NI, a new        instruction set for speeding up AES encryption).    -   5. Number of hard drive slots available;    -   6. Available storage interfaces (SATA, SAS, etc.);    -   7. Maximal amount of memory;    -   8. Supported memory configurations;        c. Cache resource parameters:    -   1. Cache resource type (e.g. DRAM, SSD), size and performance.    -   2. Is the cached storage space local or remote.    -   3. NUMA parameters.        d. Gateway resource parameters:    -   1. Number of CPUs and cores per CPU.    -   2. Performance parameters of each CPU and/or core, such as        frequency, L2 and L3 cache sizes.    -   3. Architecture (e.g. does the CPU and/or core support 64-bit        computing, is it little-endian or big-endian)    -   4. Support for certain instruction sets (e.g. AES-NI, a new        instruction set for speeding up AES encryption).    -   5. Number of hard drive slots available in the enclosure;    -   6. Available storage interfaces (SATA, SAS, etc.);    -   7. Maximal amount of memory;    -   8. Supported memory configurations;    -   9. Networking parameters relating to gateway (number of ports,        speed and type of each port, etc.)        e. Network resource parameters:    -   1. Switching and routing capacities;    -   2. Network types;    -   3. Security parameters.

It is to be noted that these are mere examples and additional and/oralternative various parameters can be used.

In some cases, data relating to dynamic behavior of the DSS 200 and theenvironment (dynamic behavior parameter data) can include variousparameters indicative of the resources of the DSS 200, includinghardware resources such as, for example:

a. Parameters relating to a data storage resource (e.g. for each of itshard drives):

-   -   1. Hard drive free space.    -   2. S.M.A.R.T. parameters of the hard drive.    -   3. The power state of the hard drive (turned off, in spin-up        phase, ready, etc.)    -   4. Recent and current load on hard drive.    -   5. Existing allocations and reservations.        b. Computer node 205 parameters:    -   1. Recent and current load statistics for each core.    -   2. Existing allocations and reservations.    -   3. Current amount of memory.        c. Cache resource parameters:    -   1. Available size.    -   2. Occupancy level of the cache.    -   3. Recent and current swapping/page fault statistics.    -   4. Existing allocations and reservations.        d. Gateway resource parameters:    -   1. Recent and current network connections statistics.    -   2. Recent and current node load statistics.    -   3. Recent and current latency statistics.    -   4. Recent and current routing cost statistics (for commands        routed by a gateway into a DSS).    -   5. Existing allocations and reservations.        e. Network resource parameters:    -   1. Recent and current load of network segments.    -   2. Recent and current reliability and quality parameters of        network segments.    -   3. Existing allocations and reservations.

It is to be noted that these are mere examples and additional and/oralternative various parameters can be used.

In some cases, input Module 102 can be configured to transfer the inputdata to one or more Processors 104. As indicated, OBMS 100 processingcan be implemented through one or more UDSP agents 220 (e.g. whileutilizing Objective based configuration module 380 as further detailedherein, inter alia with reference to FIG. 5), e.g. through UDSP agents220 installed on one or more of the computer nodes 205 in InfrastructureLayer 201, or through UDSP agents 220 installed on one or more gatewayresources 216, or through UDSP agents 220 installed on one or moreclient servers 218 with access to DSS 200 (e.g. directly or throughgateway resources 216), or any combination thereof. In such cases, theone or more processors 104 can be one or more processing resources (e.g.processing units) associated with such UDSP agents 220 (e.g. if theprocessing is implemented through a UDSP agent 220 installed on acomputer node 205, then processor can be the processing unit of thatcomputer node 205, etc.). It is to be noted that more than oneprocessing resource (e.g. processing unit) can be used for example incase of parallel and/or distributed processing.

The one or more Processors 104 can be configured to receive the inputdata from Input Module 102 and to perform an optimization process basedon the input data for determining configuration requirements that meetall of the user-defined storage requirements (e.g. SLSs) provided by theone or more users of DSS 200, inter alia with respect to entities thatthey affect (such as logical storage entities associated with suchSLSs). A more detailed description of the optimization process and ofthe determined configuration requirements is provided herein, inter aliawith respect to FIG. 3.

The configuration requirements can be transferred to Output Module 106which, in some cases, can determine if the current DSS 200 resources aresufficient to meet the determined configuration requirements.Accordingly, Output Module 106 can be configured to performsolution-driven actions, which include allocation, reservation, commitor over-commit (e.g. virtually allocating more resources than the actualresources available in the infrastructure layer 201) of the resources ifthe configuration requirements can be met by the system, or issuingimprovement recommendations to be acted upon by the user which mayinclude adding resources and/or adding plug-ins and/or any otherrecommendations for enabling the system to meet the configurationrequirements. Such improvement recommendations can include, for example,recommendation to add one or more resources, to add or upgrade one ormore plug-ins, to span the infrastructure across additional and/ordifferent locations (local and/or remote), etc.

It is to be noted that in some cases the configuration process, or partsthereof, can be initiated when deploying the DSS 200 and/or one or morelogical storage entities for the first time, and/or following one ormore changes (e.g. pre-defined changes) applied to DSS 200 and/or to oneor more logical storage entities (e.g. addition/removal of a resourcesuch as computer nodes 205, cache resources, data storage resources,network resources, plug-ins or any other resource to DSS 200; a changein one or more user-defined storage requirements; etc.), and/oraccording to the dynamic behavior of DSS 200 (as further detailed below,inter alia with respect to FIG. 5 and FIG. 11), etc. Additionally oralternatively, the configuration process, or parts thereof, can beinitiated in a semi-continuous manner (e.g. at pre-determined timeintervals, etc.). Additionally or alternatively, the configurationprocess, or parts thereof, can be performed continuously.

It is to be further noted that, with reference to FIG. 2, some of theblocks can be integrated into a consolidated block or can be broken downto a few blocks and/or other blocks may be added. Furthermore, in somecases, the blocks can be performed in a different order than describedherein. It should be also be noted that whilst the flow diagrams aredescribed also with reference to system elements that realizes them,this is by no means binding, and the blocks can be performed by elementsother than those described herein.

Attention is now drawn to FIG. 3, which schematically illustrates asimplified and exemplary flow diagram of an optimization processperformed by the objective-based storage management system, according tothe presently disclosed subject matter. In some cases, one or moreProcessors 104 can be configured to receive input data (e.g. from inputmodule 102) and, in some cases, convert the received input data into aformat suitable for processing by an optimization engine (e.g. into anoptimization problem representation) (block 112).

An optimization engine associated with one or more Processors 104 can beconfigured to perform an optimization process, based on the originaland/or converted input data to arrive at a required configuration whichsatisfies the requirements as defined by the input data (as furtherdetailed herein, inter alia with respect to FIG. 2) (block 114). It isto be noted that in some cases, the optimization process can beinstructed to return the first valid solution that it finds, whereas inother cases, the optimization process can be instructed to search forthe optimal solution out of a set of calculated valid solutions.Optionally, the optimization techniques used in the optimization processcan include any one of, or any combination of, linear programming,simulated annealing, genetic algorithms, or any other suitableoptimization technique known in the art. Optionally, the optimizationtechnique can utilize heuristics and/or approximations. Optionally,optimization decisions can be taken based on partial and/or notup-to-date information.

In some cases, the output of the optimization engine can be converted bythe one or more Processors 104 from an optimization solutionrepresentation to a configuration requirements representation (block116).

In some cases, the configuration requirements are output by the one ormore Processors 104 for example as any one of, or any combination of,the following: location requirements (e.g. availability of at least oneadditional site, availability of a certain amount of storage space inthe additional site/s, maximal latency between sites, minimalgeographical distance between sites for example for disaster recoverypurposes, etc.), cache resources requirements (e.g. required cache size,required cache type, required cache locations, required cacheperformance parameters, etc.), gateway resources requirements (e.g.required Fibre Channel bandwidth, required processing performanceparameters, etc.), network resources requirements (e.g. required networkbandwidth, required network type, etc.), computing resourcesrequirements (e.g. computer nodes processing performance parameters,computer nodes number of CPU cores, etc.), data storage resourcesrequirements (e.g. required storage space, required storage type, etc.),additional resource requirements (e.g. required compression performance,required encryption performance, etc.), plug-in requirements (e.g.required database plug-in, etc.), environment requirements (e.g.required physical security level, etc.), etc. (block 117).

It is to be noted that, with reference to FIG. 3, some of the blocks canbe integrated into a consolidated block or can be broken down to a fewblocks and/or other blocks may be added. Furthermore, in some cases, theblocks can be performed in a different order than described herein. Itshould be also be noted that whilst the flow diagrams are described alsowith reference to the system elements that realizes them, this is by nomeans binding, and the blocks can be performed by elements other thanthose described herein.

Turning to FIG. 4, there is shown a schematic illustration of asimplified flow diagram of an exemplary operational algorithm of aconfiguration process performed by the objective-based managementsystem, according to the presently disclosed subject matter. In somecases, as indicated above, Input Module 102 can receive the input dataand transfer the data to the one or more Processors 104 (block 110). Asfurther indicated above, the one or more Processors 104 can, in somecases, convert the input data into a format suitable for processing byan optimization engine (e.g. into an optimization problemrepresentation) (block 112).

An optimization engine associated with one or more Processors 104 can beconfigured to perform an optimization process, based on the originaland/or converted input data to arrive at a required configuration whichsatisfies the requirements as defined by the input data (as furtherdetailed herein, inter alia with respect to FIG. 2) (block 114). In somecases, the output of the optimization engine can be converted by the oneor more Processors 104 from an optimization solution representation to aconfiguration requirements representation (block 116).

In some cases, output module can compare the required configuration withthe actual data of the DSS 200 resources (e.g. the computer nodes 205,the storage-related resources, etc.) and/or environment fordetermination if the DSS 200 can meet the required configuration (block118). It is to be noted that in some cases the actual DSS 200 resourcescan refer to those parts of the DSS 200 resources that are currentlyavailable. If the actual DSS 200 resources and/or environment can meetthe required configuration, OBMS 100 can be configured to reserve and/orallocate the resources according to the required configuration (block126). In some cases, OBMS 100 can be configured to set up the DSS 200configuration and/or perform any induced deployment actions (block 128).In some cases, the set-up and/or deployment action can include, interalia, automatically creating new logical storage entities (such asLogical Units, Object Stores, file system instances, etc.) associatedwith SLSs. In some cases, each logical storage entity is associated witha single SLS.

As part of setting-up the storage configuration and/or performing anyinduced deployment actions, relevant set-up and/or deployment actionrequests can be sent to the UDSP agents 205; in some cases such requestsare sent to the UDSP agents 205 associated with the storage-relatedresources relevant for the requested set-up and/or deployment action. Insome cases, the UDSP agents 205 that receive such requests can beconfigured to update a data repository associated therewith about theset-up and/or deployment requested to be used by DSS 200 as furtherdetailed below, inter alia with respect to FIG. 5. In some cases,following the deployment, the process of deploying the DSS 200 endssuccessfully (block 130).

If the actual DSS 200 resources and/or environment cannot meet therequired configuration, OBMS 100 can be configured to send a message tothe user (e.g. a system administrator) providing the user with a failurenotification and/or recommendations as to corrective actions to be takenby the user for allowing implementation of the required infrastructureconfiguration (block 120). Optionally, the action can include addinginfrastructure resources which will allow successful calculation of aconfiguration. Optionally, the action can include adding relevantplug-ins. Optionally, the action can involve spanning infrastructureresources across additional and/or alternative locations. It is to benoted that the recommendations disclosed herein are mere examples, andother recommendations can be additionally or alternatively issued to theuser. In some cases, OBMS 100 can be configured to make a decision as towhether the required infrastructure configuration should bere-evaluated, optionally after some interval/delay, or not (block 122).If yes, OBMS 100 can be configured to return to block 112. Optionally,the Output Module 106 automatically goes to 112, optionally after someinterval/delay, if set to a continuous mode. Optionally, the decision toretry or not is based on user input of a retry instruction. If no, theprocess of deploying the DSS 200 failed. In some cases, OBMS 100 can beconfigured to report failures.

It is to be noted that, with reference to FIG. 4, some of the blocks canbe integrated into a consolidated block or can be broken down to a fewblocks and/or other blocks may be added. Furthermore, in some cases, theblocks can be performed in a different order than described herein. Itshould be also be noted that whilst the flow diagrams are described alsowith reference to the system elements that realizes them, this is by nomeans binding, and the blocks can be performed by elements other thanthose described herein.

Attention is now drawn to FIG. 5, in which a block diagram schematicallyillustrating an exemplary computer node connected to the DistributedStorage System, according to certain examples of the presently disclosedsubject matter, is shown.

According to some examples of the presently disclosed subject matter,Computer node 205 can comprise one or more processing resources 310. Theone or more processing resources 310 can be a processing unit, amicroprocessor, a microcontroller or any other computing device ormodule, including multiple and/or parallel and/or distributed processingunits, which are adapted to independently or cooperatively process datafor controlling relevant computer node 205 resources and/orstorage-related resources connected to computer node 205 and forenabling operations related to computer node 205 resources and/or tostorage-related resources connected to computer node 205.

Computer node 205 can further comprise one or more network interfaces320 (e.g. a network interface card, or any other suitable device) forenabling computer node 205 to communicate, inter alia with othercomputer nodes and/or other resources connected to DSS 200.

According to some examples of the presently disclosed subject matter,computer node 205 can be associated with a UDSP data repository 330,configured to store data, including inter alia data of varioususer-defined storage requirements defining SLSs, and/or data of alogical storage entities associated with each SLS, and/or data ofvarious parameters relating to computer nodes 205 and/or tostorage-related resources connected thereto and/or data relating tovarious parameters that refer to the DSS 200 or parts thereof and/ordata relating to dynamic behavior of the DSS 200 and the environment(e.g. the client servers 218, gateway resources 216, etc.), and/or datarelating to the DSS 200 set-up and/or deployment and/or any other data.In some cases, UDSP data repository 330 can be further configured toenable retrieval, update and deletion of the stored data. It is to benoted that in some cases, UDSP data repository 330 can be locatedlocally on computer node 205, on a storage-related resource connected tocomputer node 205 (e.g. a data storage resource, a cache resource, orany other suitable resource), on a client server 218, on a gatewayresource 216, or any other suitable location. In some cases, UDSP datarepository 330 can be distributed between two or more locations. In somecases, UDSP data repository 330 can be additionally or alternativelystored on one or more logical storage entities within the DSS 200. Insome cases, additionally or alternatively, UDSP data repository 330 canbe shared between multiple computer nodes.

According to some examples of the presently disclosed subject matter,computer node 205 can further comprise a UDSP agent 220 that can beexecuted, for example, by the one or more processing resources 310. Asindicated above, UDSP agents 220 can be configured, inter alia, tocontrol and manage various operations of computer node 205 and/or DSS200. UDSP agent 220 can comprise one or more of the following modules: atask management module 335, a multicast module 340, a task creationmodule 345, an execution module 350, a local parameters monitoringmodule 360, a remote nodes parameters monitoring module 370, a cloudplug & play module 380, a resource detection and management module 385,an objective based configuration module 390, a cache management module397 and an objective based routing module 395.

According to some examples of the presently disclosed subject matter,task management module 335 can be configured to manage a received task,such as a data path operation (e.g. read/write operation), as furtherdetailed, inter alia with respect to FIG. 8.

Multicast module 340 can be configured to propagate (e.g. byunicast/multicast/recast transmission) various notifications to variousUDSP agents 220 (e.g. UDSP agents installed on other computer nodes,gateway resources 216, client servers 218, etc.). Such notifications caninclude, for example, notifications of a resource status change,notifications of addition of a new resource, notifications ofdisconnection of a resource, notifications of a change in a localparameter, etc. In addition, multicast module 340 can be configured tohandle any protocols between various UDSP agents 220 and other entitiesof the DSS 200 as well as external entities (such as external managementsystems, etc.).

Task creation module 345 can be configured to create a new task forexecution in DSS 200, as further detailed inter alia with respect toFIGS. 8 and 9.

Execution module 350 can be configured to locally execute one or moreassignments associated with a received task, as further detailed herein,inter alia with respect to FIG. 10.

Local parameters monitoring module 360 can be configured to monitorvarious local parameters, such as parameters indicative of the dynamicbehavior of the computer node 205 and/or any resource connected thereto,and propagate (e.g. while utilizing Multicast module 340) notificationsindicative of a change to one or more local parameters, as furtherdetailed, inter alia with respect to FIG. 12. It is to be noted that insome cases local parameters are parameters relating to a specificcomputer node 205 (or a gateway resource 216 or a client server 218,mutatis mutandis), on which the monitoring is performed, and/or toresources connected thereto.

Remote nodes parameters monitoring module 370 can be configured toreceive notifications indicative of a change in one or more parametersof one or more remote computer nodes 205 and/or resources connectedthereto, and update UDSP data repository 330 accordingly, as furtherdetailed, inter alia with respect to FIG. 15. In some cases, remotenodes parameters monitoring module 370 can be configured to registerwith another computer node 205 (e.g. with a UDSP agent 220 associatedwith the other computer node 205) to receive selective notificationstherefrom. It is to be noted that in some cases, remote nodes parametersmonitoring module 370 can be configured to independently and/or activelyquery a remote computer node 205 for any required information.

Cloud plug & play module 380 can be configured to enable autonomousand/or automatic connection of a computer node 205 to DSS 200, asfurther detailed, inter alia with respect to FIG. 14.

Resource detection and management module 385 can be configured to detectand manage resources connected to the computer node 205, as furtherdetailed inter alia with respect to FIG. 13.

Objective based configuration module 390 can be configured to configureand/or reconfigure DSS 200 as detailed inter alia with respect to FIGS.2-4 and 11.

Objective based routing module 395 can be configured to route a receivedtask to a computer node 205 as further detailed, inter alia with respectto FIGS. 6 and 8.

Cache management module 397 can be configured, inter alia, to monitorparameters relating to cache resources, and to manage cache resourcesconnected to the computer node (including, inter alia, to perform cachehandoffs), as further detailed herein, inter alia with respect to FIGS.16-22.

It is to be noted that the one or more processing resources 310 can beconfigured to execute the UDSP agent 220 and any of the modulescomprised therein.

It is to be noted that according to some examples of the presentlydisclosed subject matter, some or all of the UDSP agent 220 modules canbe combined and provided as a single module, or, by way of example, atleast one of them can be realized in a form of two or more modules. Itis to be further noted that in some cases UDSP agents 220 can beadditionally or alternatively installed on one or more gateway resources216 and/or client servers 218, etc. In such cases, partial or modifiedversions of UDSP agents 220 can be installed on and/or used by the oneor more gateway resource 216 and/or client server 218, etc.

Turning to FIG. 6, there is shown a flowchart illustrating a sequence ofoperations carried out for creating a task, according to certainexamples of the presently disclosed subject matter. A task can begenerated in order to execute a requested operation received by the DSS200 (e.g. a read/write operation, a management operation, etc.). In somecases, a task can comprise a list of one or more assignments to beexecuted as part of the requested operation.

In some cases, task creation module 345 can perform a task creationprocess 500. For this purpose, in some cases, task creation module 345can receive a requested operation (block 510) originating for examplefrom a client server 218, a gateway resource 216, a computer node 205,or any other source. The received requested operation can include dataindicative of the type of operation (e.g. read, write, management,etc.), and/or any other data relevant to the requested operation (e.g.in a write request, data indicative of the relevant logical storageentity on which the operation is to be performed, a block to be written,etc.).

Task creation module 345 can be configured to create a task container(block 520). The task container can comprise, inter alia, one or moreof: data indicative of the requested operation originator (e.g. anetwork identifier thereof), data indicative of the relevant logicalstorage entity on which the operation is to be performed, operationspecific data (e.g. in case of a block-write operation—the block towrite) and an empty assignment list.

In some cases, e.g. when the request is associated with a logicalstorage entity, task creation module 345 can be configured to retrievethe SLS associated with the logical storage entity, and create one ormore assignments to be performed in accordance with the SLS (forexample, if the SLS requires data to be encrypted, an encryptionassignment can be automatically created, etc.) (block 530).

It is to be noted that the task creation process 500 can be performed bytask creation module 345 of UDSP agent 220 associated with computer node205. However, it is to be noted that additionally and/or alternatively,task creation process 500 can be performed by task creation module 345of UDSP agent 220 associated with client server 218 and/or gatewayresource 216, or any other source having a task creation module 345.Thus, in some cases, computer node 205 can receive one or more tasksthat have already been created, e.g. by a client server 218 and/or agateway resource 216, etc.

It is to be noted that, with reference to FIG. 6, some of the blocks canbe integrated into a consolidated block or can be broken down to a fewblocks and/or other blocks may be added. Furthermore, in some cases, theblocks can be performed in a different order than described herein. Itshould be also be noted that whilst the flow diagrams are described alsowith reference to the system elements that realizes them, this is by nomeans binding, and the blocks can be performed by elements other thanthose described herein.

In order to better understand the process of a task creation, attentionis drawn to FIG. 7, showing a flowchart illustrating a sequence ofoperations carried out for creating an exemplary storage block-writetask, according to certain examples of the presently disclosed subjectmatter. In the example provided herein, task creation module 345 canreceive block data to be written in DSS 200 and data indicative of therelevant logical storage entity on which the block is to be written(block 605).

In some cases, task creation module 345 can be configured to create anew task container. The task container can comprise, inter alia, dataindicative of the originator from which the operation originated (e.g. anetwork identifier thereof), data indicative of the relevant logicalstorage entity on which the block is to be written, storage block datato be written in the logical storage entity and an empty assignment list(block 610).

In some cases, each task can be assigned with a Generation Number. Sucha Generation Number can be a unique sequential (or any other orderedvalue) identifier that can be used by various plug-ins and resources inorder to resolve conflicts and handle out-of-order scenarios. Forexample, it can be assumed that a first task (FT) is issued before asecond conflicting task (ST) and that the ST is received for processingfirst. In such cases, the execution module 350 can be configured tocheck if the Generation Number of FT is earlier than that of ST, and insuch cases, execution module 350 can be configured not to overwrite thedata previously updated according to ST.

Task creation module 345 can also be configured to retrieve the SLSassociated with the logical storage entity on which the operation is tobe performed (block 615), and introduce relevant assignments to theassignments list associated with the task accordingly. Thus, taskcreation module 345 can be configured to check if compression isrequired according to the SLS (block 620), and if so, task creationmodule 345 can be configured to add the relevant assignment (e.g.compress data) to the assignments list (block 625). Task creation module345 can be further configured to check if encryption is requiredaccording to the SLS (block 630), and if so, task creation module 345can be configured to add the relevant assignment (e.g. encrypt data) tothe assignments list (block 635).

Assuming that these are the only two assignments to be performedaccording to the SLS, task creation module 345 has successfully createdthe new task and the new task is ready for execution (block 640).

It is to be noted that, with reference to FIG. 7, some of the blocks canbe integrated into a consolidated block or can be broken down to a fewblocks and/or other blocks may be added. Furthermore, in some cases, theblocks can be performed in a different order than described herein. Itshould be also be noted that whilst the flow diagrams are described alsowith reference to the system elements that realizes them, this is by nomeans binding, and the blocks can be performed by elements other thanthose described herein.

Following the brief explanation about tasks and their creation,attention is drawn to FIG. 8, showing a flowchart illustrating asequence of operations carried out for managing a task received by aUDSP agent, according to certain examples of the presently disclosedsubject matter.

In some cases, task management module 335 of UDSP agent 220 can beconfigured to receive a task (block 405). It is to be noted that a taskcan be received from a client server 218 (e.g. directly or through agateway resource 216 that can act, inter alia, as a protocol converter),from a gateway resource 216, from another computer node 205, from anexternal entity (e.g. an application, etc.), or from any other source.

Following receipt of a task, task management module 335 can beconfigured to retrieve all or part of the data indicative of the dynamicbehavior of all or part of the DSS 200 resources (e.g. computer nodesand/or storage-related resources, etc.) (block 410).

In some cases, task management module 335 can be configured to check ifthe task is associated with an SLS (e.g. the task relates to a specificlogical storage entity, etc.) (block 412), and if so, retrieve the SLSassociated with the logical storage entity associated with the task(e.g. from the UDSP data repository 330 or, if not available in UDSPdata repository 330, from another computer node's UDSP data repository,etc.) (block 413).

Task management module 335 can be configured to utilize objective basedrouting module 395 to grade the suitability of one or more of the DSS200 computer nodes 205 to execute one or more pending task assignments(block 415).

Pending task assignments are assignments that have no unfulfilledprerequisite prior to execution thereof. For example, a compressionassignment can depend on prior execution of a deduplication assignment,an encryption assignment can depend on prior execution of a compressionassignment, etc.

The suitability of computer nodes 205 to execute pending taskassignments and thus, their grades, can be dependent for example ontheir resources (e.g. their processing capabilities), including theirstorage-related resources and/or, in case the task relates to a logicalstorage entity, on their ability to meet one or more SLS requirements(e.g. having a resource capable of being used for executing one or moreof the task assignments in the scope of such a logical storage entity),if such requirements exist, and/or on their dynamic behavior and currentstate, etc. A more detailed description of the grading process isprovided with respect to FIG. 9.

Based on the calculated grades, task management module 335 can beconfigured to utilize objective based routing module 395 to route thetask for example to a more suitable computer node 205, and sometimes tothe most suitable computer node, per grading results (e.g. the task canbe routed to the computer node 205 having the highest grade) (block420).

Task management module 335 can be configured to check if the task wasrouted to another computer node (block 425). If the task was routed toanother computer node, then the process relating to the local computernode 205 (e.g. the computer node 205 running the process) ends (block440). However, if the local computer node 205 is the most suitable one,then one or more of the pending task assignments can be executed on thelocal computer node 205 (block 430), for example by utilizing UDSPagent's 220 execution module 350.

It is to be noted that in some cases, not all pending task assignmentsthat the local computer node 205 is capable of executing are executed byit, but only the pending task assignments for which it was selected asthe most suitable one. Thus, for example, if a task comprises threepending task assignments, two of which can be executed by the localcomputer node 205, one for which it has the highest grade and one forwhich it does not have the highest grade—the UDSP agent 220 associatedwith the local computer node 205 can be configured to execute only theassignment for which the local computer node 205 has the highest grade.It is to be further noted that UDSP agent 220 of the local computer node205 can in some cases utilize more than one processing resource of thelocal computer node 205 (if such exists) for parallel and/or concurrentprocessing of one or more assignments. In some cases, for such paralleland/or concurrent processing of more than one assignment, the localcomputer node 205 can utilize remote processing resources (e.g.processing resources associated with one or more remote computer nodes205). A more detailed description of assignments execution is providedinter alia with respect to FIG. 10.

Task management module 335 can be further configured to check ifadditional assignments exist following execution of the assignments onthe local computer node 205 and/or if the execution of the assignmentson the local computer node 205 triggered creation of one or more newtasks (e.g. a replication assignment can result in generation ofmultiple write tasks, each destined at a different location) and/orassignments (block 435). If not—the process ends (block 440). If yes—theprocess returns to block 405, in which the task with the remainingassignments and/or the one or more new tasks are received by the UDSPagent 220 associated with the local computer node 205 and the processesof managing each of the tasks begin.

In some cases, the infrastructure layer can be updated, for example byadding one or more interconnected computer nodes 205 to theinfrastructure layer, by removing one or more computer nodes 205 fromthe infrastructure layer, by modifying one or more existing computernodes 205 (e.g. adding processing resources 310 and/or other storagerelated resources thereto, removing processing resources 310 and/orother storage related resources therefrom, etc.) of the infrastructurelayer, etc. In some cases such changes to the infrastructure layer canbe performed dynamically (e.g. whenever a user desires), includingduring operation of DSS 200.

Task management module 335 can in some cases be configured to utilizeobjective based routing module 395 to grade the suitability of one ormore of the updated infrastructure layer computer nodes 205 that havebeen added or modified, to execute one or more pending task assignmentsof following tasks. In some cases, the updated infrastructure layer canbe created during such grading calculation and the calculation can beperformed in respect of one or more computer nodes 205 of the updatedinfrastructure layer. In some cases, the calculation can be performed inrespect of one or more additional or modified computer nodes 205 of theupdated infrastructure layer.

Task management module 335 can in some cases be configured to executeone or more of said pending assignments of following tasks or route saidfollowing tasks to a more suitable computer node 205 (and in some casesto the most suitable computer node 205) of the updated infrastructurelayer, based on the calculated grades.

It is to be noted that, with reference to FIG. 8, some of the blocks canbe integrated into a consolidated block or can be broken down to a fewblocks and/or other blocks may be added. Furthermore, in some cases, theblocks can be performed in a different order than described herein. Itshould be also be noted that whilst the flow diagrams are described alsowith reference to the system elements that realizes them, this is by nomeans binding, and the blocks can be performed by elements other thanthose described herein.

As detailed herein, task management module 335 can be configured toutilize objective based routing module 395 to grade the suitability ofone or more of the DSS 200 computer nodes 205 to execute pending taskassignments. Attention is drawn to FIG. 9 illustrating a sequence ofoperations carried out for grading nodes suitability to execute pendingtask assignments, according to certain examples of the presentlydisclosed subject matter.

The grading process 700 can begin, for example, by objective basedrouting module 395 receiving at least one of: a task to be performed,data indicative of the dynamic behavior of all or part of the DSS 200resources (including the computer nodes and/or the storage-relatedresources, etc.), or any other data that can be used by the gradingprocess (block 710). In some cases, when the task is associated with aspecific logical storage entity, objective based routing module 395 canalso receive the SLS associated with the logical storage entityassociated with the task.

Objective based routing module 395 can be configured to grade one ormore computer nodes 205 suitability to execute each of the pending taskassignments (block 720). The grading can be performed, inter alia, basedon the received data.

It is to be noted that a grade can be calculated for each computer node205 connected to DSS 200, or only for some of the computer nodes 205(e.g. according to the network topology, the geographic distance fromthe local computer node 205, randomly and/or deterministically selectingcomputer nodes 205 until a sufficient number of computer nodes 205suitable to execute one or more pending task assignments are found,etc.). It is to be further noted that various grading algorithms can beused for grading a computer node's 205 suitability to execute pendingtask assignments. It is to be still further noted that the gradingprocess can contain and/or use heuristics and/or approximations.Additionally or alternatively, the grading can be based on partialand/or not up-to-date information.

In some cases, for each computer node 205 that a grade is to becalculated for, objective based routing module 395 can be configured tocheck, for each pending task assignment, if the computer node 205 canexecute the pending task assignment. In case the task is associated witha logical storage entity, objective based routing module 395 can alsocheck if the computer node 205 can execute the pending task assignmentwhile meeting the requirements defined by the respective SLS. In casethe computer node 205 cannot execute the pending task assignment (orcannot meet the requirements defined by the SLS when relevant), thegrade for that node will be lower than the grade of a computer node 205that is capable of executing the pending task assignment (while meetingthe requirements defined by the SLS when relevant). In some cases, thegrade is calculated also based on parameters data relating to one ormore storage-related resources connected to the respective computer node205 (e.g. data of parameters relating to presence and/or loads and/oravailability and/or faults and/or capabilities and/or response timeand/or connectivity and/or costs associated with the storage-relatedresources), and the capability of such storage-related resources toexecute the pending task assignment (while meeting the requirementsdefined by the SLS when relevant).

In an exemplary manner, and for ease of understanding, the grade of acomputer node 205 that cannot execute the pending task assignment (whilemeeting the requirements defined by the SLS, when relevant) is zero,whereas the grade of a computer node 205 that is capable of executingthe pending task assignment (while meeting the requirements defined bythe SLS when relevant) is greater than zero.

It is to be noted that in some cases, the calculated grades can berepresented by non-scalar values, e.g. by multi-dimensional values. Itis to be further noted that the calculated grades may not belong to anordered set. It is to be still further noted that the decision of asuitable node and/or a most suitable node (e.g. the decision which gradeis “higher”) can be arbitrary (e.g. when the grades do not belong to anordered set, etc.).

In some cases, if the local computer node 205 suitability to execute theassignment would be identical to that of one or more remote computernodes 205 if they all had identical communication costs of communicatingthe task thereto, the local computer node's 205 grade will be higher dueto the costs associated with communicating the task to any remotecomputer node 205.

In some cases, for each computer node 205 that a grade is to becalculated for, objective based routing module 395 can be configured tocalculate an integrated grade based on the grades calculated for eachpending task assignment (block 730). Such an integrated grade can be,for example, a summary of the computer node's 205 assignments grades, anaverage of the computer node's 205 assignments grades, or any othercalculation based on the calculated computer node's 205 assignmentsgrades.

It is to be noted that, with reference to FIG. 9, some of the blocks canbe integrated into a consolidated block or can be broken down to a fewblocks and/or other blocks may be added. Furthermore, in some cases, theblocks can be performed in a different order than described herein. Itshould be also be noted that whilst the flow diagrams are described alsowith reference to the system elements that realizes them, this is by nomeans binding, and the blocks can be performed by elements other thanthose described herein.

Turning to FIG. 10, there is shown an illustration of a sequence ofoperations carried out for executing pending task assignments on acomputer node, according to certain examples of the presently disclosedsubject matter.

As detailed herein, task management module 335 can be configured toutilize execution module 350 for performing an assignments executionprocess 800 for executing one or more of the pending task assignments.In such cases, execution module 350 can be configured to execute one ormore pending task assignments (block 810).

As indicated herein, it is to be noted that in some cases, not allpending task assignments that the local computer node 205 is capable ofexecuting are executed by it, but only the pending task assignments forwhich it was selected. In addition, it is to be further noted that UDSPagent 220 associated with the local computer node 205 can in some casesutilize more than one processing resource (if such exists) for paralleland/or concurrent processing of one or more assignments. In some cases,for such parallel and/or concurrent processing of more than oneassignment, the local computer node 205 can utilize remote processingresources (e.g. processing resources associated with one or more remotecomputer nodes 205).

Following execution of the one or more pending task assignments,execution module 335 can be configured to update the statuses of theexecuted assignments to indicate that the assignments have been executed(block 820).

In some cases assignments can be partially executed or their executioncan fail. In such cases, execution module 335 can be configured toupdate the assignment status with relevant indications. In some casesthe statuses can also contain data of the execution results.

In some cases, execution module 335 can be configured to check if thereis a need to check the current DSS 200 configuration (including, interalia, the resources availability and allocation) (block 830). Such aneed can exist, for example, in case the execution of one or more of theexecuted assignments that is associated with a logical storage entitydid not meet (or came close to not meeting, e.g. according topre-defined thresholds, etc.) the respective SLS requirements and/or ifone or more assignments execution failed and/or if execution of anassignment results in change of data of parameters relating to computernodes 205 and/or to resources connected thereto that exceeds apre-defined or calculated threshold (such as shortage of storage spaceor any other resource, etc.) and/or for any other reason.

In case there is a need to check the current configuration of DSS 200,execution module 335 can be configured to recommend UDSP agents 220associated with one or more computer nodes 205 to check if areconfiguration is required (block 840). It is to be noted that in somecases the recommendation can be handled by objective based configurationmodule 390 of the UDSP agent 220 associated with the computer node 205on which the one or more assignments are executed. In other cases, therecommendation can be sent to UDSP agents 220 associated with one ormore computer nodes 205 that can be responsible for performing thereconfiguration process (e.g. dedicated computer nodes). A furtherexplanation regarding the reconfiguration check is provided herein,inter alia with respect to FIG. 11.

In case there is no need to check the current configuration of DSS 200or following the recommendation to check if a reconfiguration isrequired, execution module 335 can be configured to check if followingexecution of the one or more pending task assignments the task isfinished (e.g. all of the assignments associated with the task have beenexecuted) (block 850).

In case the task is not finished the process ends (block 860). If thetask is finished, execution module 335 can be configured to check if anynotification indicating that the task is finished is required (e.g. anotification to the task originator, etc.) (block 870). If nonotification is required, the process ends (block 860). If anotification is required, execution module 335 can be configured toissue a notification of the task execution as required (block 880) andthe process ends (block 860).

According to some examples of the presently disclosed subject matter,for each required notification a dedicated assignment of sending therequired notification can be created, e.g. during the task creationprocess described herein. In such cases, optionally, blocks 850-880 canbe disregarded.

It is to be noted that, with reference to FIG. 10, some of the blockscan be integrated into a consolidated block or can be broken down to afew blocks and/or other blocks may be added. Furthermore, in some cases,the blocks can be performed in a different order than described herein.It should be also be noted that whilst the flow diagrams are describedalso with reference to the system elements that realizes them, this isby no means binding, and the blocks can be performed by elements otherthan those described herein.

Attention is now drawn to FIG. 11, illustrating a sequence of operationscarried out for managing reconfigurations of DSS, according to certainexamples of the presently disclosed subject matter.

According to some examples of the presently disclosed subject matter, insome cases, a reconfiguration process 900 checking if a reconfigurationof DSS 200 is required can be performed. In some cases, such a check canbe performed periodically (e.g. according to a pre-defined timeinterval, for example, every minute, every five minutes, every hour, orany other pre-defined time interval), continuously (e.g. in a repeatingloop, etc.), following a triggering event (e.g. a monitored parameterexceeds a pre-defined or calculated threshold, receipt of arecommendation from a UDSP agent 220 associated with a computer node205, as detailed inter alia with respect to FIG. 10, etc.), etc.

As indicated herein, in some cases, each UDSP agent 220 associated witha computer node 205 can be configured to perform the reconfigurationprocess 900, e.g. while utilizing objective based configuration module390. In some cases, UDSP agents 220 associated with one or more computernodes 205 (e.g. dedicated computer nodes) can be responsible forperforming the reconfiguration process 900, e.g. while utilizingobjective based configuration module 390.

In some cases, objective based configuration module 390 can beconfigured to receive any one of, or any combination of, SLSs associatedwith one or more logical storage entities in DSS 200, data indicative ofthe dynamic behavior of the DSS 200 and its resources and environment,data indicative of the current configurations of DSS 200, statisticaldata and historical data related to DSS 200, etc. (block 910). It is tobe noted that in some cases all or part of the data can additionally oralternatively be retrieved from the UDSP data repository 330 associatedwith computer node 205 on which the reconfiguration process 900 isperformed.

In some cases, objective based configuration module 390 can beconfigured to utilize the received data for checking if any of the SLSsare breached (or close to be breached, e.g. according to pre-definedthresholds, etc.) and/or if there is any other reason (e.g. failure toperform one or more assignments irrespective of an SLS, etc.) forperforming a reconfiguration of the DSS 200 (block 920).

It is to be noted that whereas in some cases, every time an SLS isbreached (it should be noted that breach of an SLS can sometimes includenearing such a breach, e.g. according to pre-defined thresholds, etc.) areconfiguration of DSS 200 can be initiated, in other cases suchreconfiguration of DSS 200 can be initiated depending on meeting somepre-defined criteria. Such criteria can be, for example, a pre-definednumber of detected SLS breaches required is to be met, either within apre-defined time frame or irrespective of the time, etc. Thus, forexample, exemplary criteria can be detection of three SLS breaches, ordetection of three SLS breaches within one day, etc. In some cases, theimportance of a breach can additionally or alternatively be consideredas a criterion. For this purpose, objective based configuration module390 can be configured to utilize the statistical data and historicaldata related to DSS 200.

In case there is a need to reconfigure DSS 200, objective basedconfiguration module 390 can be configured to activate the ObjectiveBased Management System (OBMS) 100 for performing a DSS 200configuration process, as detailed above, inter alia with respect toFIGS. 2-4 (block 930). It is to be noted, as indicated herein, that incases of reconfiguration of DSS 200, OBMS 100 can receive the currentconfigurations of DSS 200 as part of the inputs for the configurationprocess and take it into consideration when reconfiguring DSS 200. Insome cases, during such reconfiguration, OBMS 100 can be configured toreserve and/or allocate and/or reallocate and/or free all or part of theresources.

If no SLS is breached (or is close to be breached) and there is no otherreason for performing a reconfiguration, or following initiation of areconfiguration of DSS 200, reconfiguration process 900 ends (block940).

It is to be noted that, with reference to FIG. 11, some of the blockscan be integrated into a consolidated block or can be broken down to afew blocks and/or other blocks may be added. Furthermore, in some cases,the blocks can be performed in a different order than described herein.It should be also be noted that whilst the flow diagrams are describedalso with reference to the system elements that realizes them, this isby no means binding, and the blocks can be performed by elements otherthan those described herein.

Attention is now drawn to FIG. 12, illustrating a sequence of operationscarried out for monitoring local parameters of a computer node andresources connected thereto, according to certain examples of thepresently disclosed subject matter.

In some cases, local parameters monitoring module 360 can be configuredto monitor various parameters of a computer node 205 and/orstorage-related resources connected thereto (block 1010). As indicatedherein, the monitored parameters can be any parameters indicative ofpresence and/or loads and/or availability and/or faults and/orcapabilities and/or response time and/or connectivity and/or costs (e.g.costs of network links, different types of data storage resources)and/or any other parameters indicative of the dynamic behavior of thecomputer node 205 and/or any storage-related resource connected theretoand/or any other data relating to the computer node 205 and/or to one ormore of the storage-related resources connected thereto. In some cases,local parameters monitoring module 360 can be configured to monitorvarious parameters of a client server 218 and/or a gateway resource 216,mutatis mutandis.

It is to be noted that such monitoring can be performed periodically(e.g. according to a pre-defined time interval, for example, everyminute, every five minutes, every hour, or any other pre-defined timeinterval), continuously (e.g. in a repeating loop, etc.), following atriggering event (e.g. connection of a new resource to the computer node205, etc.), etc.

In some cases, local parameters monitoring module 360 can be configuredto check if a new parameter or a change in the value of any of themonitored parameters was detected (block 1020). If not, local parametersmonitoring module 360 can be configured to continue monitoringparameters. If, however, a new parameter or a change in the value of anyof the monitored parameters has been detected, local parametersmonitoring module 360 can be configured to propagate (e.g. whileutilizing multicast module 340) notifications indicative of a change toone or more local parameters. In some cases, such notifications can besent to one or more computer nodes 205 and/or client servers 218 and/orgateway resources 216 (e.g. by unicast/multicast/recast transmission)(block 1030).

It is to be noted that in some cases, local parameters monitoring module360 can be configured to send various types of notifications that cancomprise various indications (e.g. indications of various groups of oneor more local parameters, etc.) in various pre-determined time periodsor in response to various triggering events. It is to be further notedthat some notifications can be selectively sent, for example to one ormore computer nodes 205 that registered to receive such notifications.

In some cases, local parameters monitoring module 360 can be configuredto update the parameter value, and in some cases additionally oralternatively, derivatives thereof (e.g. various statistical datarelated to the parameter) in UDSP data repository 330 (block 1040).

In some cases, local parameters monitoring module 360 can be configuredto check if there is a need to check the current DSS 200 configuration.Such a need can exist, for example, in case one of the monitoredparameters exceeded a pre-defined or calculated threshold associatedtherewith and/or for any other reason.

In case there is a need to check the current configuration of DSS 200,local parameters monitoring module 360 can be configured to recommendUDSP agents 220 associated with one or more computer nodes 205 to checkif a reconfiguration is required. It is to be noted that in some casesthe recommendation can be handled by objective based configurationmodule 390 of the UDSP agent 220 associated with the local computer node205 on which the local parameters monitoring module 360 is running. Inother cases, the recommendation can be sent to UDSP agents 220associated with one or more computer nodes 205 that can be responsiblefor performing the reconfiguration process (e.g. dedicated computernodes). A further explanation regarding the reconfiguration check isprovided herein, inter alia with respect to FIG. 11.

It is to be noted that, with reference to FIG. 12, some of the blockscan be integrated into a consolidated block or can be broken down to afew blocks and/or other blocks may be added. Furthermore, in some cases,the blocks can be performed in a different order than described herein.It should be also be noted that whilst the flow diagrams are describedalso with reference to the system elements that realizes them, this isby no means binding, and the blocks can be performed by elements otherthan those described herein.

Attention is now drawn to FIG. 13, illustrating a sequence of operationscarried out for detecting and managing resources connected to a computernode, according to certain examples of the presently disclosed subjectmatter.

In some cases, resource detection and management module 385 can beconfigured to perform a detection and management process 1200. In somecases resource detection and management module 385 can be configured toscan for storage-related resources connected to one or more computernodes 205 (block 1210). In some cases, resource detection and managementmodule 385 can be configured to perform the scan continuously and/orperiodically (e.g. every pre-determined time period, for example everyminute, every five minutes, every hour, etc.), etc. In some case, thescan can be initiated by a user (e.g. a system administrator, etc.).

Resource detection and management module 385 can be configured to checkif any new storage-related resource is found (block 1220). If no newstorage-related resource is found, resource detection and managementmodule 385 can be configured to continue scanning for storage-relatedresources. If one or more new storage-related resources are found,storage-related resource detection and management module 385 can beconfigured to check if there is a need in one or more plug-ins for usingsuch a storage-related resource and if so whether the plug-ins existlocally (e.g. on the computer node 205 to which the new resource isattached/connected) (block 1230).

If there is a need for one or more plug-ins and they all exist locally,resource detection and management module 385 can be configured toassociate the plug-ins with the new storage-related resource and thestorage-related resource can be added to the local resource pool (block1240).

If there is a need for one or more plug-ins that do not exist locally,resource detection and management module 385 can be configured to checkif the one or more missing plug-ins exist, for example on one or morecomputer nodes 205 and/or client servers 218 and/or gateway resources216 (e.g. while utilizing multicast module 340) and/or in a sharedvirtual software extensions library as detailed herein (block 1250)and/or on any other location on DSS 200, and/or on any auxiliary entity.

If resource detection and management module 385 found the requiredplug-ins, resource detection and management module 385 can be configuredto associate the plug-ins with the new storage-related resource and thestorage-related resource can be added to the local resource pool (block1240).

In some cases, if resource detection and management module 385 did notfind the required plug-ins, resource detection and management module 385can be configured to issue one or more plug-in requests. Such plug-inrequests can in some cases be sent to a user (block 1270), thus enablingsuch a user to add the relevant plug-ins to DSS 200 (e.g. afterpurchasing it, downloading it from the Internet, etc.). Followingsending such a request, resource detection and management module 385 canbe configured to continue scanning for storage-related resources (block1210).

It is to be noted that in some cases, until the required plug-ins arefound, retrieved (if required) and installed, the new storage-relatedresource can be marked as a new storage-related resource that isidentified every time a scan for storage-related resources is performedand thus, the process detailed herein repeats until the requiredplug-ins are found.

In some cases, resource detection and management module 385 can beadditionally or alternatively configured to check if a storage-relatedresource removal is detected following the scan for storage-relatedresources (block 1280). In such cases, if a storage-related resourceremoval is detected, resource detection and management module 385 can beconfigured to remove the storage-related resource from the localresource pool and, optionally, clean up any plug-ins that are no longerrequired (e.g. in light of the fact that the resource that utilized suchplug-ins is removed) (block 1290).

It is to be noted that in some cases, resource detection and managementmodule 385 can be additionally or alternatively configured to performthe detection and management process 1200 for storage-related resourcesconnected/disconnected to/from one or more client servers 218 and/orgateway resources 216, mutatis mutandis. It is to be further noted thatutilization of the resource detection and management module 385 canenable seamless addition and/or removal and/or attachment and/ordetachment of storage-related resources to computer nodes 205 and/or toclient servers 218 and/or gateway resources 216 (e.g. “plug and play”),including during operation of DSS 200, and in some cases withoutperforming any management action by a user (including, inter alia, anypreliminary management action).

It is to be further noted that in some cases, addition and/or removal ofstorage-related resources to/from the local resource pool can result inchanges to the monitored local parameters of a computer node 205 (e.g.addition and/or removal and/or update and/or any other change of variouslocal parameters). As indicated herein, when new parameters aredetected, in some cases, appropriate notifications can be sent by localparameters monitoring module 360, as detailed herein inter alia withrespect to FIG. 12. It is to be noted that in some cases suchnotifications can trigger reconfiguration.

It is to be noted that, with reference to FIG. 13, some of the blockscan be integrated into a consolidated block or can be broken down to afew blocks and/or other blocks may be added. Furthermore, in some cases,the blocks can be performed in a different order than described herein.It should be also be noted that whilst the flow diagrams are describedalso with reference to the system elements that realizes them, this isby no means binding, and the blocks can be performed by elements otherthan those described herein.

Attention is now drawn to FIG. 14, illustrating a sequence of operationscarried out for connecting a new computer node to Distributed StorageSystem (DSS), according to certain examples of the presently disclosedsubject matter.

In some cases, when a new computer node 205, comprising a UDSP agent 220connects to a network, cloud plug and play module 380 of the newcomputer node 205 can be configured to detect a new network connectionand/or a change to an existing network connection (e.g. that thecomputer node 205 on which cloud plug and play module 380 is connectedto a new or to a different network) (block 1305). Following detection ofa new network connection, cloud plug and play module 380 can beconfigured to send (e.g. by unicast/multicast/recast transmission) adiscovery message, for example by utilizing multicast module 340 (block1310). Such discovery message can trigger any receiving computer node205 to respond, e.g. by sending a response including at least a DSS 200identifier (each DSS 200 can have a unique identifier that enablesidentification thereof).

Cloud plug and play module 380 can be configured to listen for anyresponse received within a pre-determined time interval (e.g. a timeinterval that can enable the receiving computer nodes 205 to respond tothe discovery message) and check if any response was received (block1315). If no response was received, and computer node 205 did not join aDSS 200, cloud plug and play module 380 can be configured to repeatblock 1310 and resend a discovery message.

If a response was received, cloud plug and play module 380 can beconfigured to check if the responses refer to a single DSS 200 (e.g.according to the received DSS 200 identifiers) (block 1320). If so,cloud plug and play module 380 can be configured to join computer node205 to the detected DSS 200 (block 1325). It is to be noted that as aresult of joining a DSS 200, computer node 205 can automatically beginsending and receiving various notifications, as detailed herein.

If more than one DSS 200 is detected (e.g. more than one DSS 200identifier is received as a response to the discovery message), cloudplug and play module 380 can be configured to check if a default DSS 200exists (block 1330). For this purpose, in some cases, an indication of adefault DSS 200 can be retrieved from a local registry (e.g. a datarepository accessible on the local network), from a Domain Name System(e.g. under a pre-defined DNS record, etc.), etc. In some cases anindication of a default DNS 200 can be sent by one of the respondingcomputer nodes 205 whose response can include an indication of thedefault DSS 200. It is to be noted that other methods and techniques foridentifying a default DSS 200 can be used as well.

If such default DSS 200 exists, cloud plug and play module 380 can beconfigured to join computer node 205 to the default DSS 200 (block1325). If no default DSS 200 is detected, an indication of the newcomputer node 205 can be provided to a user for its selection of the DSS200 to which the new computer node 205 is to join, and cloud plug andplay module 380 can be configured to wait for such selection (block1335). Once a selection is made, cloud plug and play module 380 can beconfigured to join computer node 205 to the selected DSS 200 (block1325).

In some cases, upon detection of a new network connection (block 1305),cloud plug and play module 380 can be additionally or alternativelyconfigured to look up a local registry (e.g. a data repositoryaccessible on the local network) and/or a global registry (e.g. a datarepository accessible on the Internet) registry service, for example ona pre-defined network address and/or on a directory service (e.g. DNS,Active Directory, etc.) (block 1340). Such registry service can enableinter alia identification of available DSS's 200 and/or a default DSS200.

Cloud plug and play module 380 can be configured to check if a localregistry is found (block 1345), and if so, it can be configured toregister on the local registry (if it is not already registered) (block1355). Such registration can include storing various configurationparameters related to the local computer node 205 in the registry. Cloudplug and play module 380 can be further configured to check if a policydefined by the local registry allows global registration (block 1355).If so, or in case that no local registry is found, cloud plug and playmodule 380 can be configured to check if a global registry is found(block 1360). If so—cloud plug and play module 380 can be configured toregister on the global registry (if it is not already registered) (block1365). Such registration can include storing various configurationparameters related to the local computer node 205 in the registry.

Following registration on the global registry or in case the policydefined by the local registry does not allow global registration, cloudplug and play module 380 can be configured to jump to block 1320 andcontinue from there.

It is to be noted that other methods can be used in order to join a newcomputer node 205 to a DSS 200, both automatically and manually, and themethods provided herein are mere examples.

It is to be noted that utilization of the cloud plug and play module 380can enable computer nodes 205 to be seamlessly added and/or removedand/or attached and/or detached from the network, at any time, includingduring operation of DSS 200, and in some cases without performing anymanagement action by a user (including, inter alia, any preliminarymanagement action), provided that a UDSP agent 220 is installed on thecomputer node 205 (a detailed description of a UDSP agent 220 isprovided herein). It is to be further noted that optionally, followingaddition and/or removal and/or attachment and/or detachment of one ormore computer nodes 205 from the network, no user is required forenabling continued operation of the DSS 200.

It is to be noted that, with reference to FIG. 14, some of the blockscan be integrated into a consolidated block or can be broken down to afew blocks and/or other blocks may be added. Furthermore, in some cases,the blocks can be performed in a different order than described herein.It should be also be noted that whilst the flow diagrams are describedalso with reference to the system elements that realizes them, this isby no means binding, and the blocks can be performed by elements otherthan those described herein.

Attention is now drawn to FIG. 15, illustrating a sequence of operationscarried out for receiving a notification from a remote computer node andupdating a Unified Distributed Storage Platform (UDSP) data repositoryaccordingly, according to certain examples of the presently disclosedsubject matter.

In some cases, remote nodes parameters monitoring module 370 of a UDSPagent 220 of a computer node 205 can be configured to receive variousnotifications (general notifications and/or notifications originatingfrom a source to which computer node 205 registered in order to receivemessages from) originating from other computer nodes 205 and/or clientservers 218 and/or gateway resources 216 and/or users, etc. (block1410).

In some cases, remote nodes parameters monitoring module 370 can beconfigured to update UDSP data repository 330 accordingly (block 1420).

It is to be noted that such data stored in UDSP data repository 330 canbe used in order to locally maintain knowledge of the DSS 200 state(e.g. its dynamic behavior, etc.) or parts thereof which are relevantfor the processes carried out by the computer node 205, as detailedherein.

It is to be noted, with reference to FIG. 15, that some of the blockscan be integrated into a consolidated block or can be broken down to afew blocks and/or other blocks may be added. Furthermore, in some cases,the blocks can be performed in a different order than described herein.It should be also be noted that whilst the flow diagrams are describedalso with reference to the system elements that realizes them, this isby no means binding, and the blocks can be performed by elements otherthan those described herein.

Having described the DSS 200, there follows a description of a systemand method for managing cache resources in a DSS 200. As indicatedherein, infrastructure layer 201 can comprise one or more, and in somecases two or more, computer nodes 205. Infrastructure layer 201 canfurther comprise one or more cache resources 212 and/or resources thatcan be used as cache resources (e.g. RAM, DRAM, SSD 213, etc.). Eachcache resource 212 and/or resource that can be used as a cache resourcecan be connected to one or more computer nodes 205 (e.g. directly, by anetwork, etc.). As further indicated above, each computer node 205 canhave a UDSP agent 220 installed thereon (or otherwise associatedtherewith).

As indicated herein, UDSP agent 220 can comprise a cache managementmodule 397. The cache management module 397 can be configured to handlevarious cache related operations, inter alia over one or more cacheresources on which standard and/or dedicated caching algorithms, methodsand techniques are operating. The cache management module 397 can beconfigured to manage the cache mappings of the object spaces stored onthe one or more cache resources connected to one or more computer nodes205 connected to DSS 200.

FIG. 16 is a block diagram schematically illustrating cache managementmodule, according to certain examples of the presently disclosed subjectmatter.

According to some examples of the presently disclosed subject matter,cache management module 397 can comprise one or more of the followingmodules: Local cache resources management module 2510, Remote cacheresources monitoring module 2520, cache handoff module 2530 and objectrequests management module 2540.

Local cache resources management module 2510 can be configured to managelocal cache resources of a computer node 205, as further detailedherein, inter alia with respect to FIG. 17.

Remote cache resources monitoring module 2520 can be configured tomonitor remote cache resources of remote computer nodes 205 and issuehandoff recommendations and/or instructions accordingly, as furtherdetailed herein, inter alia with respect to FIG. 18.

Cache handoff module 2530 can be configured to perform various cachehandoff related processes, as further detailed herein, inter alia withrespect to FIGS. 20 and 21.

Object requests management module 2540 can be configured to manageobject related requests received during handoff, as further detailedherein, inter alia with respect to FIGS. 22 and 23.

It is to be noted that according to some examples of the presentlydisclosed subject matter, some or all of the cache management module 397modules can be combined and provided as a single module, or, by way ofexample, at least one of them can be realized in a form of two or moremodules.

Attention is drawn to FIG. 17. FIG. 17 is a flowchart illustrating asequence of operations carried out for managing local cache resources ofa computer node, according to certain examples of the presentlydisclosed subject matter.

According to some examples of the presently disclosed subject matter,local cache resources management module 2510 can be configured tomonitor various cache related parameters, including parameters of thecache resources connected to the computer node 205 (block 1510).

Cache related parameters 205 can include node-level cache relatedparameters corresponding to computer node 205 and/or resources(including cache resources) connected thereto (e.g. load parameters,performance parameters, presence parameters, availability parameters,faults parameters, capability parameters, response time parameters,connectivity parameters, costs parameters, location parameters, etc.).Cache related parameters can additionally or alternatively includeobject-level cache related parameters (e.g. location of the cachedobject, type of media on which the object is cached, etc.) pertaining tothe cached objects (e.g. objects cached on the cache resources). Cacherelated parameters can still additionally or alternatively includeexternal cache related parameters, such as parameters of variousentities using the cache (e.g. client servers 218, etc.).

Local cache resources management module 2510 can be still furtherconfigured to receive third party recommendations (e.g. a recommendationfrom a remote computer node 205) to perform cache handoff (as furtherdetailed below, inter alia with respect to FIG. 18). It is to be notedthat such third party recommendations can include data of one or morecache related parameters, such data can in some cases include cacherelated parameters indicative of the reason according to which the thirdparty recommends performing cache handoff. In case of receiving thirdparty recommendations, local cache resources management module 2510 canbe configured to determine if such received parameters are preferable(e.g. new and/or more updated parameters are received) over the locallyknown parameters (e.g. parameters stored on the UDSP data repository 330associated with computer node 205), and if so—take them intoconsideration, in addition and/or instead of locally known parameters,in the following blocks.

It is to be noted that such monitoring can be performed periodically(e.g. according to a pre-defined time interval, for example, everyminute, every five minutes, every hour, or any other pre-defined timeinterval), continuously (e.g. in a repeating loop, etc.), following atriggering event (e.g. connection/disconnection of a storage-relatedresource, including a cache resource, to/from the computer node 205,etc.), etc.

It is to be noted that in some cases, the monitoring of cache relatedparameters can be performed by local parameters monitoring module 360,as further detailed herein, inter alia with respect to FIG. 12.

In case a change in the value of one or more of the monitored parametersis detected and/or any new parameter is detected and/or any parameter isno longer detected (e.g. a certain cache resource is removed, etc.)and/or periodically (e.g. according to a pre-defined or calculated timeinterval, for example, every minute, every five minutes, every hour, orany other pre-defined time interval), local cache resources managementmodule 2510 can be configured to check if the monitored parametersindicate a breach of one or more cache related requirements defined byone or more SLSs. Such a check can be performed, for example, byevaluating the monitored parameters in light of the SLSs associated withobjects that are currently cached on the cache resource and/or objectsthat are mapped to the cache resource (using any of the mappingsdetailed herein), e.g. in light of the SLSs associated with the logicalstorage entities with which such objects are associated.

Local cache resources management module 2510 can be further configuredto determine if the monitored parameters meet one or more FirstSLS-criteria such as one or more high watermarks (e.g. predefinedmaximal thresholds, calculated maximal thresholds, etc.), associatedwith such cache related SLSs, indicating nearing breaching (orbreaching) of one or more such SLSs.

Local cache resources management module 2510 can be still furtherconfigured to determine if the monitored parameters indicate a breach ornearing such a breach (e.g. according to one or more First SLS-criteriasuch as one or more high watermarks) of one or more thresholds and/orSLSs that refer to the DSS 200 or parts thereof (e.g. maximal allowedsite-level over-commit, maximal allowed overall over-commit, varioussecurity parameters, etc.) (block 1520).

It is to be noted that, for these purposes, local cache resourcesmanagement module 2510 can be configured to retrieve the relevant SLSsfrom UDSP data repository 330.

If there is an SLS breach or an SLS is nearing being breached or thereis breach of one or more parameters that refer to the DSS 200 or partsthereof, local cache resources management module 2510 can be configuredto search one or more handoff targets (e.g. another, remote, computernode 205 having one or more cache resources 212, and/or one or moreresources that can be used as a cache resource, connected thereto) towhich the first, local, computer node 205 (the handoff initiator) iscapable of transferring ownership (e.g. responsibility for handling) ofone or more cache object spaces, so that all cache-related SLSs, and/orthresholds and/or SLSs that refer to the DSS 200 or parts thereof (e.g.maximal allowed site-level over-commit, maximal allowed overallover-commit, various security parameters, etc.), will be met posttransfer (block 1530). Cache-related SLSs are any SLSs containingrequirements that refer to, and/or affect, one or more cached objects,and/or one or more computer nodes 205 containing such objects and/orcache resources associated therewith, and/or any entity associated withsuch computer nodes 205.

It is to be noted that a handoff initiator can be responsible forhandling one or more object spaces relating to one or more logicalstorage entities. A handoff (transfer of ownership) of one or more cacheobject spaces or portions thereof results in the handoff targetreceiving ownership of the transferred one or more cache object spaces,or portions thereof.

In some cases, local cache resources management module 2510 can befurther configured to search for handoff targets to which the localcomputer node 205 (handoff initiator) is capable of transferringownership of one or more cache object spaces, in some cases so that oneor more Second SLS-criteria, such as the handoff target's mid watermarks(e.g. predefined middle thresholds, calculated middle thresholds, etc.),associated with one or more of the cache-related SLSs, are met.

Local cache resources management module 2510 can be further configuredto check if one or more handoff targets are found (block 1540). If not,in some cases, local cache resources management module 2510 can beconfigured to report to a user that there are insufficient cacheresources (insufficient resources error) and, optionally, recommend to auser, actions to be performed for allowing the cache resources to meetthe requirements of the one or more cache-related SLSs (e.g. addingcache resources, etc.).

If one or more handoff targets are found, local cache resourcesmanagement module 2510 can be configured to initiate a handoff processwith one or more of the detected handoff targets (block 1560), asfurther detailed, inter alia with reference to FIG. 20. In some cases,following initiation of a handoff process, local cache resourcesmanagement module 2510 can be configured to return to block 1510 andcontinue monitoring cache parameters.

It is to be noted that in some cases, as a non-limiting example, theselection of the one or more handoff targets can be performed byrandomly selecting (or selecting according to any other rule, etc.) oneor more of the possible handoff targets that were found in block 1530.As another non-limiting example, the selection of the one or morehandoff targets can be performed by operating any type of rankingalgorithm to rank the suitability of one or more of the possible handofftargets that were found in block 1530 and selecting the most suitableones.

In case, following monitoring cache related parameters pertaining tocache resources connected to the local computer node 205, and/or toreceipt of third party recommendations to perform cache handoff, thereis no SLS breach or no crossing of one or more First SLS-criteria (e.g.a high watermark), local cache resources management module 2510 can befurther configured to check if any of the monitored cache relatedparameters do not meet one or more Third SLS-criteria, such as lowwatermarks (e.g. predefined minimal thresholds, calculated minimalthresholds, etc.) associated with one or more cache-related SLSs and/orthresholds and/or SLSs that refer to the DSS 200 or parts thereof (e.g.maximal allowed site-level over-commit, maximal allowed overallover-commit, various security parameters, etc.), and, hence, it isconsidered underutilized (block 1570). If the local computer node's 205cache resources are not underutilized, local cache resources managementmodule 2510 can be configured to return to block 1510 and continuemonitoring cache parameters.

If one or more of the local computer node's 205 cache resources, orparts thereof, are underutilized, local cache resources managementmodule 2510 can be configured to search for one or more handoff targetsto which the local computer node 205 is capable of transferringownership of one or more cache object spaces, so that all cache-relatedSLSs and/or thresholds and/or SLSs that refer to the DSS 200 or partsthereof (e.g. maximal allowed site-level over-commit, maximal allowedoverall over-commit, various security parameters, etc.) will be met posttransfer (block 1580). In some cases, local cache resources managementmodule 2510 can be further configured to search for handoff targets towhich the local computer node 205 is capable of transferring ownershipof one or more cache object spaces, so that the handoff target's SecondSLSs criteria, such as mid watermarks (e.g. predefined middlethresholds, calculated middle thresholds, etc.), associated with one ormore of the cache-related SLSs, are met.

It is to be noted that in some cases, as a non-limiting example, theselection of the one or more handoff targets can be performed byrandomly selecting (or selecting according to any other rule, etc.) oneor more of the possible handoff targets that were found in block 1530.As another non-limiting example, the selection of the one or morehandoff targets can be performed by operating any type of rankingalgorithm (such as algorithms that promote consolidation of cachedobject mappings, etc.) to rank the suitability of one or more of thepossible handoff targets that were found in block 1530 and selecting themost suitable ones.

It is to be noted that such transfer of cached objects can result inreleasing cache resources that can be, for example, utilized, ifpossible, for other purposes, either of the DSS 200 or of any otherentity. Such transfer of cached objects can also result in enablingturning off the cache resources if they are entirely released (no moreobjects are cached thereon and no entity is using it), thus resulting inreduction of power consumption.

Local cache resources management module 2510 can be further configuredto check if one or more handoff targets are found (block 1590). If oneor more handoff targets are found, local cache resources managementmodule 2510 can be configured to initiate a handoff process with one ormore of the detected handoff targets (block 1560), as further detailed,inter alia with reference to FIG. 20.

In some cases, following initiation of a handoff process, local cacheresources management module 2510 can be configured to return to block1510 and continue monitoring cache parameters.

It is to be noted, with reference to FIG. 17, that some of the blockscan be integrated into a consolidated block or can be broken down to afew blocks and/or other blocks may be added. Furthermore, in some cases,the blocks can be performed in a different order than described herein.It should be also be noted that whilst the flow diagrams are describedalso with reference to the system elements that realizes them, this isby no means binding, and the blocks can be performed by elements otherthan those described herein.

Attention is now drawn to FIG. 18, illustrating a sequence of operationscarried out for monitoring remote cache resources of remote computernodes, according to certain examples of the presently disclosed subjectmatter.

According to some examples of the presently disclosed subject matter,remote cache resources monitoring module 2520 can be configured tomonitor various cache related parameters, including parameters of thecache resources connected to one or more remote computer node 205 (block1510). Cache related parameters 205 can include node-level cache relatedparameters of remote computer nodes 205 and/or resources (includingcache resources) connected thereto (e.g. load parameters, performanceparameters, presence parameters, availability parameters, faultsparameters, capability parameters, response time parameters,connectivity parameters, costs parameters, location parameters, etc.).Cache related parameters can additionally or alternatively includeobject-level cache related parameters (e.g. location of the cachedobject, type of media on which the object is cached, etc.) pertaining tothe cached objects. Cache related parameters can still additionally oralternatively include external cache related parameters, such asparameters of various entities using the cache (e.g. client servers 218,etc.) (block 1610).

For this purpose, remote cache resources monitoring module 2520 can beconfigured to retrieve relevant cache related parameters from UDSP datarepository 330.

Remote cache resources monitoring module 2520 can be configured toutilize such parameters in order to determine if one or more handoffrecommendations should be issued (block 1620).

It is to be noted that a handoff recommendation should be issued, forexample, if the monitored cache related parameters indicate a breach orare nearing such a breach (e.g. according to one or more FirstSLS-criteria such as one or more high watermarks) of one or more cacherelated SLSs (any SLSs containing requirements that refer to, and/oraffect, one or more cached objects, and/or one or more computer nodes205 containing such objects and/or cache resources associated therewith,and/or any entity associated with such computer nodes 205) and/orthresholds and/or SLSs that refer to the DSS 200 or parts thereof (e.g.maximal allowed site-level over-commit, maximal allowed overallover-commit, various security parameters, etc.).

As another example, in some cases, a handoff recommendation should beissued if any of the monitored cache related parameters crossed one ormore Third SLS-criteria, such as low watermarks (e.g. predefined minimalthresholds, calculated minimal thresholds, etc.) and, hence, it isconsidered underutilized, etc.

It is to be noted that, for this purpose, remote cache resourcesmanagement module 2520 can be configured to retrieve the relevant SLSsfrom UDSP data repository 330.

If a handoff recommendation should be issued, remote cache resourcesmonitoring module 2520 can be configured to issue such a notification toone or more computer nodes 205 whose monitored parameters indicate anSLS breach, nearing such a breach or underutilization as detailed herein(block 1630).

In some cases, remote cache resources monitoring module 2520 can beconfigured to additionally or alternatively provide one or more handoffinstructions. A handoff recommendation can be refused by a handofftarget/initiator whilst a handoff instruction can be a command toperform cache handoff. In some cases such a handoff instruction can beissued to one or more handoff initiators, causing it to search for ahandoff target and initiate a handoff therewith. In some cases, such ahandoff instruction can be issued to one or more handoff initiators andone or more respective handoff targets with which a handoff can beperformed, causing the one or more handoff initiators to initiate ahandoff with the respective one or more handoff targets.

It is to be noted, with reference to FIG. 18, that some of the blockscan be integrated into a consolidated block or can be broken down to afew blocks and/or other blocks may be added. Furthermore, in some cases,the blocks can be performed in a different order than described herein.It should be also be noted that whilst the flow diagrams are describedalso with reference to the system elements that realizes them, this isby no means binding, and the blocks can be performed by elements otherthan those described herein.

Attention is now drawn to FIG. 19, illustrating various scenarios ofdistributing cache resources, according to an exemplary embodiment ofthe invention.

Looking at FIG. 19, it can be appreciated that computer node w/cache2010 (when reference is made to a computer node w/cache, it refers to acomputer node 205 having cache resources connected thereto), can, insome cases, act as a handoff initiator transferring ownership of one ormore cache object spaces or parts thereof to computer node w/cache 2020,and as a handoff target receiving ownership of one or more cache objectspaces, or parts thereof, for example from computer node w/cache 2030.It is to be noted that in some cases, computer node w/cache 2010 cansimultaneously act as a handoff initiator and as a handoff target.

In some cases a certain computer node w/cache, e.g. computer nodew/cache 2030 can act as a handoff initiator performing handoff with morethan one other handoff targets, e.g. with computer node w/cache 2010 andcomputer node w/cache 2040, in some cases simultaneously.

In some cases a certain computer node w/cache, e.g. computer nodew/cache 2040 can act as a handoff target performing handoff with morethan one other handoff initiators, e.g. with computer node w/cache 2030and computer node w/cache 2050, in some cases simultaneously.

In some cases a certain computer node w/cache, e.g. computer nodew/cache 2090 can act as a handoff target performing handoff with ahandoff initiator, e.g. with computer node w/cache 2095 and act as ahandoff initiator performing handoff with the same handoff initiator,e.g. with computer node w/cache 2095, now acting as a handoff target, insome cases simultaneously. Thus, for example, computer node w/cache 2095can initiate a handoff with computer node w/cache 2090, while computernode w/cache 2090 can initiate a handoff with computer node w/cache2095, in some cases simultaneously.

In some cases a certain computer node (with or without cache resourcesconnected thereto), e.g. computer node 205, can be configured torecommend one or more computer nodes w/cache, e.g. computer node w/cache2080 and computer node w/cache 2070, to initiate one or more handoffswith one or more handoff targets.

In some cases a certain client server, e.g. client server 218, can beconfigured to recommend one or more computer nodes w/cache, e.g.computer node w/cache 2070, to initiate one or more handoffs with one ormore handoff targets.

In some cases a certain gateway resource, e.g. gateway resource 216, canbe configured to recommend one or more computer nodes w/cache, e.g.computer node w/cache 2080, to initiate one or more handoffs with one ormore handoff targets (such handoffs in which computer node w/cache 2080is initiating a handoff according to such a recommendation are not shownin the drawing).

In some cases a certain computer node w/cache, e.g. computer nodew/cache 2070 and computer node w/cache 2080, can be configured toreceive one or more recommendations from one or more computer nodes(with or without cache resources connected thereto) and/or clientservers and/or gateway resources, e.g. computer node 205, gatewayresource 216, client server 218, to initiate one or more handoffs withone or more handoff targets.

In some cases a certain computer node w/cache, e.g. computer nodew/cache 2070, can be configured to receive one or more recommendationsfrom one or more computer nodes (with or without cache resourcesconnected thereto) and/or client servers and/or gateway resources, e.g.computer node 205, client server 218, to initiate one or more handoffswith one or more handoff targets, and act as a handoff initiatortransferring ownership of one or more cache object spaces or partsthereof to another computer node w/cache, e.g. computer node w/cache2080, in some cases simultaneously.

It is to be noted, as any person of ordinary skill in the art canappreciate, that the scenarios exemplified above are mere examples andnumerous other scenarios, not presented in the illustration provided inFIG. 19, can exist.

Attention is now drawn to FIG. 20, illustrating a sequence of operationscarried out for performing a cache handoff by a handoff initiator,according to certain examples of the presently disclosed subject matter.

According to some examples of the presently disclosed subject matter,cache handoff module 2530 associated with a handoff initiator (acomputer node 205 having cache resources connected thereto that isinitiating transfer of ownership of one or more cache object spaces, orparts thereof, to another computer node 205 having cache resourcesconnected thereto) can be configured to start handoff of ownership ofone or more cache object spaces, or parts thereof (block 1710).

For this purpose, cache handoff module 2530 can be configured to createa new post-handoff cache mapping indicative of the post handoff locationof each of the cache object spaces, or parts thereof affected by thehandoff process (block 1720).

It is to be noted that each client server 218 (or any other user of DSS200) can have one or more local cache mappings indicative of one or morecomputer nodes 205 handling cache object spaces, relating to one or morelogical storage entities to which the client server 218 (or any otheruser of DSS 200) refers. It can be appreciated that cache handoffsrequire updating of such one or more cache mappings accordingly, asfurther detailed, inter alia with reference to block 1770.

In some non-limiting examples, such cache mapping can be described byusing a hierarchical structure of partitioning functions that reflects,in a compact manner, any partitioning, merge and location changes of thecache object spaces, resulting from handoff processes. Some examples ofsuch partitioning functions are hash functions, splitting odd and evenaddressed objects, etc. It is to be noted that such cache mappingdescription manners and such partitioning functions are mere examplesand any other known method and/or techniques can be utilizedadditionally or alternatively.

Cache handoff module 2530 can be further configured to enter a “handoffin progress” state, for example by setting a local flag indicative ofsuch a state (block 1730), and send a “handoff start” notification,including the post-handoff cache mapping, to a handoff target (acomputer node 205 having cache resources connected thereto that isselected to receive ownership of one or more cache object spaces orparts thereof, from the handoff initiator) to which the handoff isrequested, indicative of its request to initiate a handoff processtherewith (block 1740). Cache handoff module 2530 can be furtherconfigured to wait (e.g. for a predetermined or calculated time-frame,etc.) for a response to the handoff request from the handoff target. Itis to be noted that a handoff target can accept such a handoff request,refuse such a handoff request, or partially accept such a handoffrequest (e.g. accept receiving ownership of only part of the one or morecache object spaces or parts thereof that the handoff initiator istrying to transfer thereto, etc.).

Cache handoff module 2530 can be also configured to check if the handoffrequest has been accepted by the handoff target (block 1750). If thehandoff request has been refused (or, in some cases, if no response wasreceived within a pre-determined time-frame, etc.), cache handoff module2530 can be configured to exit the “handoff in progress” state (block1760).

If however, the request was accepted, cache handoff module 2530 can beconfigured to send the post-handoff cache mapping to one or more clientservers 218 (or any other relevant user of DSS 200), for example toclient servers 218 that are associated with the one or more cache objectspaces (e.g. that have access rights to the logical storage entitiesassociated therewith), or parts thereof, to be transferred (block 1770).It is to be noted that in some cases, the new cache mapping can be sentto every client server 218 (or any other relevant user of DSS 200)connected to DSS 200.

In addition, cache handoff module 2530 can be configured to transferownership of non-dirty cached objects (cache objects that were notmodified since last saved to persistent storage associated with therelevant cache object space) that have been mapped to the handoff targetin the post handoff cache mapping, to the handoff target, for example bysending such cached objects (e.g. by transmitting their data) to thehandoff target and/or by “forgetting” them (e.g. by marking them asdeleted or physically deleting them from the handoff initiator's cacheresources) (block 1780).

Still additionally, cache handoff module 2530 can be configured totransfer ownership of dirty cache objects (cache objects that weremodified since last saved to persistent storage associated with therelevant cache object space) that are mapped to the handoff target inthe post-handoff cache mapping, by flushing them (saving them to thepersistent storage associated with the relevant cache object space)and/or by sending such cached objects (e.g. by transmitting their data)to the handoff target, and then “forgetting” them (block 1790).

In some cases, cache handoff module 2530 can be further configured tosend a “handoff finished” notification to the handoff target, indicatingthat the handoff has been performed (block 1795), and to exit the“handoff in progress” state (block 1760). In some cases, block 1795 canbe performed only after execution of blocks 1780 and 1790 is completed.

It is to be noted, with reference to FIG. 20, that some of the blockscan be integrated into a consolidated block or can be broken down to afew blocks and/or other blocks may be added. Furthermore, in some cases,the blocks can be performed in a different order than described herein.It should be also be noted that whilst the flow diagrams are describedalso with reference to the system elements that realizes them, this isby no means binding, and the blocks can be performed by elements otherthan those described herein.

Attention is now drawn to FIG. 21, illustrating a sequence of operationscarried out for performing a cache handoff by a handoff target,according to certain examples of the presently disclosed subject matter.

According to some examples of the presently disclosed subject matter,cache handoff module 2530 associated with a handoff target can beconfigured to receive a “handoff start” notification (including thepost-handoff cache mapping) from a handoff initiator, save a backup copyof the local pre-handoff cache mapping, update the cache mappingaccording to the post-handoff cache mapping received from the handoffinitiator and enter a “handoff in-progress” state (block 1810).

Cache handoff module 2530 can, in some cases, be further configured tocheck if the handoff request received from the handoff initiator isacceptable (block 1820), for example according to the handoff targetknowledge of cache-related SLSs, and/or thresholds and/or SLSs thatrefer to the DSS 200 or parts thereof (e.g. maximal allowed site-levelover-commit, maximal allowed overall over-commit, various securityparameters, etc.), and/or cache-related parameters stored in the UDSPdata repository 330 associated with it.

It can be appreciated that in some cases a handoff target can haveaccess to information about the cache-related SLSs, and/or thresholdsand/or SLSs that refer to the DSS 200 or parts thereof (e.g. maximalallowed site-level over-commit, maximal allowed overall over-commit,various security parameters, etc.), and/or cache-related parametersassociated therewith and/or with the cache resources connected thereto,different than such information that the handoff initiator has access to(and in some cases, new and/or more updated information). For example,in some cases, by the time that a handoff request is received by ahandoff target, one or more parameters relating to the cache resourcesconnected thereto have already changed.

If the handoff request is not acceptable (e.g. based on the handofftarget knowledge), cache handoff module 2530 can be configured to send arefusal notification to the handoff initiator (indicating that thehandoff target does not accept the handoff request sent by the handoffinitiator), restore the local pre-handoff cache mapping (saved forbackup in block 1810), and exit the “handoff in-progress” state (block1830).

If the handoff request is acceptable, cache handoff module 2530 can beconfigured to send an acceptance notification to the handoff initiator(indicating that the handoff target accepts the handoff request sent bythe handoff initiator) (block 1840). In such cases, cache handoff module2530 can be configured to wait for a “handoff finished” notification,indicating that the one or more cache object space, or parts thereof,have been transferred to the responsibility of the handoff target, andonce such a notification is received, exit the “handoff in-progress”state (block 1850).

It is to be noted, with reference to FIG. 21, that some of the blockscan be integrated into a consolidated block or can be broken down to afew blocks and/or other blocks may be added. Furthermore, in some cases,the blocks can be performed in a different order than described herein.It should be also be noted that whilst the flow diagrams are describedalso with reference to the system elements that realizes them, this isby no means binding, and the blocks can be performed by elements otherthan those described herein.

Attention is now drawn to FIG. 22, illustrating a sequence of operationscarried out for handling an object related request received by a handoffinitiator during handoff, according to certain examples of the presentlydisclosed subject matter.

According to some examples of the presently disclosed subject matter,object requests management module 2540 associated with a handoffinitiator can be configured to receive an object related request (e.g. aread/write request) relating to an object within the pre-handoff and/orpost-handoff cache mappings, for example from a client (e.g. a clientserver 218, a gateway resource 216, or any other source), during handoff(block 1910).

It is to be noted that in some cases, the requesting client can send therequest prior to updating its local cache mapping according to thepost-handoff cache mapping (as, in some cases, the post-handoff cachemapping is not received by the client immediately, for example due toheavy traffic on the network or for any other reason). Thus such anobject related request can be sent to the handoff initiator while therequested object is no longer owned (e.g. handled) by it. Accordingly,upon receipt of such an object related request, object requestsmanagement module 2540 can be configured to check if the requestedobject is under the ownership of the handoff initiator according to thepost-handoff cache mapping (block 1920) and if so—object requestsmanagement module 2540 can be configured to process the request (block1930).

However, if the handoff initiator is not the owner of the requestedobject according to the post-handoff cache mapping, then object requestsmanagement module 2540 can be configured to check if the requestedobject is still under the ownership of the handoff initiator (e.g. asthe handoff initiator did not transfer the ownership over the requestedobject yet) (block 1940).

If such a requested object is still owned by the handoff initiator,object requests management module 2540 can be configured to process therequest (block 1930). However, if such a requested object is no longerowned by the handoff initiator, object requests management module 2540can be configured to relay the object related request to the handofftarget (block 1950).

It is to be noted, with reference to FIG. 22, that some of the blockscan be integrated into a consolidated block or can be broken down to afew blocks and/or other blocks may be added. Furthermore, in some cases,the blocks can be performed in a different order than described herein.It should be also be noted that whilst the flow diagrams are describedalso with reference to the system elements that realizes them, this isby no means binding, and the blocks can be performed by elements otherthan those described herein.

Attention is now drawn to FIG. 23, illustrating a sequence of operationscarried out for handling an object related request, relating to anobject included in the post-handoff cache mapping, received by a handofftarget during handoff, according to certain examples of the presentlydisclosed subject matter.

According to some examples of the presently disclosed subject matter,object requests management module 2540 associated with a handoff targetcan be configured to receive an object related request (e.g. aread/write request) relating to an object within the post-handoff cachemappings, for example from a client (e.g. a client server 218, a gatewayresource 216, or any other source) or from a handoff initiator (block2110). Upon receipt of such a request, object requests management module2540 can be configured to check if the request originated from a handoffinitiator (block 2120).

As indicated herein, a handoff initiator will relay an object relatedrequest to a handoff target following a determination that the handoffinitiator is not the owner of the requested object according to thepost-handoff cache mapping and that the handoff initiator is not thecurrent owner of the requested object (an indication that the handoffinitiator is still the owner can be, for example, that the object isstill dirty in the handoff initiator's cache, etc.). Thus, whenever therequest originates from a handoff initiator, object requests managementmodule 2540 can be configured to process the request (block 2130), asthis indicates that the handoff initiator has already transferredownership of the requested object to the handoff target.

If the request did not originate from a handoff initiator, objectrequests management module 2540 can be configured to check if therequested object is owned by the handoff target (as, for example, thehandoff target has already received ownership of the requested objectfrom the handoff initiator, etc.) (block 2140). If it is owned by thehandoff target, object requests management module 2540 can be configuredto process the request (block 2130).

If the requested object is not owned by the handoff target (as, forexample, the requested object ownership was not yet transferred and thehandoff process did not end), object requests management module 2540 canbe configured to relay the request to the handoff initiator (block2150). It is to be noted that such scenario can result, for example,from the fact that a certain user can have an updated post-handoff cachemapping, indicating that the requested object is mapped to the handofftarget, whereas, while it requests the requested object, the handoffprocess is still on-going and thus the requested object ownership wasnot yet transferred to the handoff target.

It is to be noted, with reference to FIG. 23, that some of the blockscan be integrated into a consolidated block or can be broken down to afew blocks and/or other blocks may be added. Furthermore, in some cases,the blocks can be performed in a different order than described herein.It should be also be noted that whilst the flow diagrams are describedalso with reference to the system elements that realizes them, this isby no means binding, and the blocks can be performed by elements otherthan those described herein.

What is claimed is:
 1. A computer node configured to being connected toan infrastructure layer of a distributed storage system, saidinfrastructure layer including interconnected computer nodes, at leastone of said interconnected computer nodes comprising one or morestorage-related resources, the computer node comprising: at least oneprocessing resource configured to execute a Unified Distributed StoragePlatform (UDSP) agent, wherein said UDSP agent is configured to: receivea task comprising at least one assignment; calculate grades for at leastone of said assignments in respect of at least one of saidinterconnected computer nodes, such that each grade being indicative ofa suitability of a respective computer node of said interconnectedcomputer nodes to execute a respective assignment of said assignmentswhile meeting at least one Service Level Specification (SLS)requirement, said grade is calculated also based on parameters datarelating to one or more storage-related resources connected to saidrespective computer node, if any; based on the calculated grades,execute one or more of said assignments or route the task to a moresuitable computer node irrespective of the ability of said computer nodeto execute said one or more of said assignments; calculate grades forassignments of following tasks in respect of at least one addedinterconnected computer node of an updated infrastructure layer; saidupdated infrastructure layer is created in response to adding at leastone additional interconnected computer node thereto; and execute one ormore of said assignments of following tasks or route said followingtasks to a more suitable computer node of said updated infrastructurelayer, based on the calculated grades.
 2. The computer node of claim 1wherein while calculating grades for said assignments of followingtasks, said updated infrastructure layer is created, and saidcalculation is performed in respect of at least one added interconnectedcomputer node of the created updated infrastructure layer.
 3. Thecomputer node of claim 1 wherein while calculating grades for saidassignments of following tasks, said updated infrastructure layer iscreated, and said calculation is performed in respect of at least oneinterconnected computer node of the created updated infrastructurelayer.
 4. The computer node of claim 1 wherein said updatedinfrastructure layer is created dynamically.
 5. The computer node ofclaim 1 wherein grades are calculated only for pending assignments. 6.The computer node of claim 1 wherein said one or more storage-relatedresources include at least one storage-related resource of the followingstorage-related resource categories: cache resources, data storageresources and network resources.
 7. The computer node of claim 1 whereinsaid one or more storage-related resources include at least onestorage-related resource of each of the following storage-relatedresource categories: cache resources, data storage resources and networkresources.
 8. The computer node of claim 1 wherein said grades arecalculated by an optimization engine.
 9. The computer node of claim 8wherein said optimization engine uses one or more of the followingoptimization techniques: (a) Linear programming; (b) Simulatedannealing; (c) Genetic algorithms.
 10. The computer node of claim 9wherein the one or more optimization techniques uses heuristics orapproximates.
 11. The computer node of claim 1 wherein said moresuitable computer node is a most suitable computer node based on thecalculated grades.
 12. The computer node of claim 1 wherein said UDSPagent is further configured to calculate an integrated grade based onthe calculated assignments grades, and wherein said execute one or moreof said assignments or route the task to a more suitable computer node,is based on the calculated integrated grade.
 13. The computer node ofclaim 1 wherein said task is received from a client server.
 14. Thecomputer node of claim 13 wherein said task is received from said clientserver through a gateway resource.
 15. The computer node of claim 1wherein said UDSP agent is further configured to: a. monitor at leastone parameter indicative of a current state of said computer node or ofa current state of one or more storage-related resources connected tosaid computer node, if any; b. propagate a notification indicative of achange to said at least one monitored parameter to at least one of saidinterconnected computer nodes.
 16. The computer node of claim 1 whereinsaid UDSP agent is further configured to: calculate grades forassignments of following tasks in respect of at least one modifiedinterconnected computer node of said updated infrastructure layer; saidupdated infrastructure layer includes at least one modifiedinterconnected computer node; said modification including at least oneof (i) at least one new storage-related resource is connected to therespective node (ii) at least one existing storage-related resource isdisconnected from the respective node (iii) at least one existingstorage-related resource is modified; and execute one or more of saidassignments of following tasks or route said following tasks to a moresuitable computer node of said updated infrastructure layer, based onthe calculated grades.
 17. The computer node of claim 1 wherein saidUDSP agent is further configured to: receive at least one Service LevelSpecification (SLS) comprising user-defined storage requirementsreferring to at least one logical storage entity, and storage-relatedresources parameters data relating to one or more storage-relatedresources connected to said interconnected computer nodes; calculate aconfiguration for the distributed storage system based, at least, onsaid at least one SLS and said storage-related resources parametersdata; and automatically allocate at least part of one of saidstorage-related resources according to the calculated configuration. 18.The computer node of claim 17 wherein said UDSP agent is furtherconfigured to: receive dynamic behavior parameters data relating todynamic behavior of the distributed storage system; upon at least oneSLS being breached, calculate a reconfiguration for the distributedstorage system, based, at least, on said at least one SLS, saidstorage-related resources parameters data and said dynamic behaviorparameters data; and automatically allocate at least part of one of saidstorage-related resources according to the calculated reconfiguration.19. A method of operating a computer node configured to being connectedto an infrastructure layer of a distributed storage system, saidinfrastructure layer including interconnected computer nodes, at leastone of said interconnected computer nodes comprising one or morestorage-related resources, the method comprising: receiving a taskcomprising at least one assignment; calculating grades for at least oneof said assignments in respect of at least one of said interconnectedcomputer nodes, such that each grade being indicative of a suitabilityof a respective computer node of said interconnected computer nodes toexecute a respective assignment of said assignments while meeting atleast one Service Level Specification (SLS) requirement, said grade iscalculated also based on parameters data relating to one or morestorage-related resources connected to said respective computer node, ifany; based on the calculated grades, executing one or more of saidassignments or routing the task to a more suitable computer nodeirrespective of the ability of said computer node to execute said one ormore of said assignments; calculating grades for assignments offollowing tasks in respect of at least one added interconnected computernode of an updated infrastructure layer; said updated infrastructurelayer is created in response to adding at least one additionalinterconnected computer node thereto; and executing one or more of saidassignments of following tasks or routing said following tasks to a moresuitable computer node of said updated infrastructure layer, based onthe calculated grades.
 20. The method of claim 19 wherein whilecalculating grades for said assignments of following tasks, said updatedinfrastructure layer is created, and said calculation is performed inrespect of at least one added interconnected computer node of thecreated updated infrastructure layer.
 21. The method of claim 19 whereinwhile calculating grades for said assignments of following tasks, saidupdated infrastructure layer is created, and said calculating isperformed in respect of at least one interconnected computer node of thecreated updated infrastructure layer.
 22. The method of claim 19 whereinsaid updated infrastructure layer is created dynamically.
 23. The methodof claim 19 wherein grades are calculated only for pending assignments.24. The method of claim 19 wherein said one or more storage-relatedresources include at least one storage-related resource of the followingstorage-related resource categories: cache resources, data storageresources and network resources.
 25. The method of claim 19 wherein saidone or more storage-related resources include at least onestorage-related resource of each of the following storage-relatedresource categories: cache resources, data storage resources and networkresources.
 26. The method of claim 19 wherein said calculating grades isperformed by an optimization engine.
 27. The method of claim 26 whereinsaid optimization engine uses one or more of the following optimizationtechniques: (a) Linear programming; (b) Simulated annealing; (c) Geneticalgorithms.
 28. The method of claim 27 wherein the one or moreoptimization techniques uses heuristics or approximates.
 29. The methodof claim 19 wherein said more suitable computer node is a most suitablecomputer node based on the calculated grades.
 30. The method of claim 19further comprising: calculating an integrated grade based on thecalculated assignments grades, and wherein said executing one or more ofsaid assignments or routing the task to a more suitable computer node,is based on the calculated integrated grades.
 31. The method of claim 19wherein said task is received from a client server.
 32. The method ofclaim 31 wherein said task is received from said client server through agateway resource.
 33. The method of claim 19 further comprising: a.monitoring at least one parameter indicative of a current state of saidcomputer node or of a current state of one or more storage-relatedresources connected to said computer node, if any; b. propagating anotification indicative of a change to said at least one monitoredparameter to at least one of said interconnected computer nodes.
 34. Themethod of claim 19 further comprising: calculating grades forassignments of following tasks in respect of at least one modifiedinterconnected computer node of said updated infrastructure layer, saidupdated infrastructure layer includes at least one modifiedinterconnected computer node; said modification including at least oneof (i) at least one new storage-related resource is connected to therespective node (ii) at least one existing storage-related resource isdisconnected from the respective node (iii) at least one existingstorage-related resource is modified; and executing one or more of saidassignments of following tasks or routing said following tasks to a moresuitable computer node of said updated infrastructure layer, based onthe calculated grades.
 35. The method of claim 19 further comprising:receiving at least one Service Level Specification (SLS) comprisinguser-defined storage requirements referring to at least one logicalstorage entity, and storage-related resources parameters data relatingto one or more storage-related resources connected to saidinterconnected computer nodes; calculating a configuration for thedistributed storage system based, at least, on said at least one SLS andsaid storage-related resources parameters data; and automaticallyallocating at least part of one of said storage-related resourcesaccording to the calculated configuration
 36. The method of claim 35further comprising: receiving dynamic behavior parameters data relatingto dynamic behavior of the distributed storage system; upon at least oneSLS being breached, calculating a reconfiguration for the distributedstorage system, based, at least, on said at least one SLS, saidstorage-related resources parameters data and said dynamic behaviorparameters data; and automatically allocating at least part of one ofsaid storage-related resources according to the calculatedreconfiguration.
 37. A distributed storage system comprising: aninfrastructure layer including interconnected computer nodes, wherein:each one of said interconnected computer nodes comprising at least oneprocessing resource configured to execute a Unified Distributed StoragePlatform (UDSP) agent; at least one of said interconnected computernodes comprising one or more storage-related resources; said UDSP agentis configured to: receive a task comprising at least one assignment;calculate grades for at least one of said assignments in respect of atleast one of said interconnected computer nodes, such that each gradebeing indicative of a suitability of a respective computer node of saidinterconnected computer nodes to execute a respective assignment of saidassignments while meeting at least one Service Level Specification (SLS)requirement, said grade is calculated also based on storage-relatedresources parameters data relating to one or more storage relatedresources connected to said respective computer node, if any; based onthe calculated grades, execute one or more of said assignments or routethe task to a more suitable computer node of said infrastructure layerirrespective of the ability of said computer node to execute said one ormore of said assignments; calculate grades for assignments of followingtasks in respect of at least one added interconnected computer node ofan updated infrastructure layer; said updated infrastructure layer iscreated in response to adding at least one additional interconnectedcomputer node thereto; and execute one or more of said assignments offollowing tasks or route said following tasks to a more suitablecomputer node of said updated infrastructure layer, based on thecalculated grades.
 38. The distributed storage system of claim 37wherein while calculating grades for said assignments of followingtasks, said updated infrastructure layer is created, and saidcalculation is performed in respect of at least one added interconnectedcomputer node of the created updated infrastructure layer.
 39. Thedistributed storage system of claim 37 wherein while calculating gradesfor said assignments of following tasks, said updated infrastructurelayer is created, and said calculation is performed in respect of atleast one interconnected computer node of the created updatedinfrastructure layer.
 40. The distributed storage system of claim 37wherein said updated infrastructure layer is created dynamically. 41.The distributed storage system of claim 37 wherein grades are calculatedonly for pending assignments.
 42. The distributed storage system ofclaim 37 wherein said one or more storage-related resources include atleast one storage-related resource of the following storage-relatedresource categories: cache resources, data storage resources and networkresources.
 43. The distributed storage system of claim 37 wherein saidone or more storage-related resources include at least onestorage-related resource of each of the following storage-relatedresource categories: cache resources, data storage resources and networkresources.
 44. The distributed storage system of claim 37 wherein saidgrades are calculated by an optimization engine.
 45. The distributedstorage system of claim 44 wherein said optimization engine uses one ormore of the following optimization techniques: (d) Linear programming;(e) Simulated annealing: (f) Genetic algorithms.
 46. The distributedstorage system of claim 45 wherein the one or more optimizationtechniques uses heuristics or approximates.
 47. The distributed storagesystem of claim 37 wherein said more suitable computer node is a mostsuitable computer node based on the calculated grades.
 48. Thedistributed storage system of claim 37 wherein said UDSP agent isfurther configured to calculate an integrated grade based on thecalculated assignments grades, and wherein said execute one or more ofsaid assignments or route the task to a more suitable computer node, isbased on the calculated integrated grades.
 49. The distributed storagesystem of claim 37 wherein said task is received from a client server.50. The distributed storage system of claim 49 wherein said task isreceived from said client server through a gateway resource.
 51. Thedistributed storage system of claim 37 wherein said UDSP agent isfurther configured to: a. monitor at least one parameter indicative of acurrent state of said computer node or of a current state of one or morestorage-related resources connected to said computer node, if any; b.propagate a notification indicative of a change to said at least onemonitored parameter to at least one of said interconnected computernodes.
 52. The distributed storage system of claim 37 wherein said UDSPagent is further configured to: calculate grades for assignments offollowing tasks in respect of at least one modified interconnectedcomputer node of said updated infrastructure layer, said updatedinfrastructure layer includes at least one modified interconnectedcomputer node; said modification including at least one of (i) at leastone new storage-related resource is connected to the respective node(ii) at least one existing storage-related resource is disconnected fromthe respective node (iii) at least one existing storage-related resourceis modified; and execute one or more of said assignments of followingtasks or route said following tasks to a more suitable computer node ofsaid updated infrastructure layer, based on the calculated grades. 53.The distributed storage system of claim 37 wherein said UDSP agent isfurther configured to: receive at least one Service Level Specification(SLS) comprising user-defined storage requirements referring to at leastone logical storage entity; calculate a configuration for thedistributed storage system based, at least, on said at least one SLS andsaid storage-related resources parameters data; and automaticallyallocate at least part of one of said storage-related resourcesaccording to the calculated configuration.
 54. The distributed storagesystem of claim 53 wherein said UDSP agent is further configured to:receive dynamic behavior parameters data relating to dynamic behavior ofthe distributed storage system; upon at least one SLS being breached,calculate a reconfiguration for the distributed storage system, based,at least, on said at least one SLS, said storage-related resourcesparameters data and said dynamic behavior parameters data; andautomatically allocate at least part of one of said storage-relatedresources according to the calculated reconfiguration.
 55. A distributedstorage system comprising: an infrastructure layer includinginterconnected computer nodes, wherein: each one of said interconnectedcomputer nodes comprising at least one processing resource configured toexecute a Unified Distributed Storage Platform (UDSP) agent; at leastone of said interconnected computer nodes comprising one or morestorage-related resources; said UDSP agent is configured to: receive atask comprising at least one assignment; calculate grades for at leastone of said assignments in respect of at least one of saidinterconnected computer nodes, such that each grade being indicative ofa suitability of a respective computer node of said interconnectedcomputer nodes to execute a respective assignment of said assignmentswhile meeting at least one Service Level Specification (SLS)requirement, said grade is calculated also based on storage-relatedresources parameters data relating to one or more storage relatedresources connected to said respective computer node, if any; based onthe calculated grades, execute one or more of said assignments or routethe task to a more suitable computer node of said infrastructure layerirrespective of the ability of said computer node to execute said one ormore of said assignments; calculate grades for assignments of followingtasks in respect of at least one modified interconnected computer nodeof an updated infrastructure layer, said updated infrastructure layer iscreated in response to a modification of at least one interconnectedcomputer node; said modification including at least one of (i) at leastone new storage-related resource is connected to the respective node(ii) at least one existing storage-related resource is disconnected fromthe respective node (iii) at least one existing storage-related resourceis modified; and execute one or more of said assignments of followingtasks or route said following tasks to a more suitable computer node ofsaid updated infrastructure layer, based on the calculated grades. 56.The distributed storage system of claim 55 wherein said UDSP agent isfurther configured to: receive dynamic behavior parameters data relatingto dynamic behavior of the distributed storage system; when at least oneSLS requirement is breached, calculate a reconfiguration for thedistributed storage system, based, at least, on said at least one SLSrequirement, said storage-related resources parameters data and saiddynamic behavior parameters data; and automatically allocate at leastpart of one of said storage-related resources according to thecalculated reconfiguration.
 57. The distributed storage system of claim55 wherein while calculating grades for said assignments of followingtasks, said updated infrastructure layer is created, and saidcalculation is performed in respect of at least one modifiedinterconnected computer node of the created updated infrastructurelayer.
 58. The distributed storage system of claim 55 wherein whilecalculating grades for said assignments of following tasks, said updatedinfrastructure layer is created, and said calculation is performed inrespect of at least one interconnected computer node of the createdupdated infrastructure layer.
 59. The distributed storage system ofclaim 55 wherein said updated infrastructure layer is createddynamically.
 60. The distributed storage system of claim 55 wherein saidone or more storage-related resources include at least onestorage-related resource of the following storage-related resourcecategories: cache resources, data storage resources and networkresources.
 61. A computer node configured to being connected to aninfrastructure layer of a distributed storage system, saidinfrastructure layer including interconnected computer nodes, at leastone of said interconnected computer nodes comprising one or morestorage-related resources, the computer node comprising: at least oneprocessing resource configured to execute a Unified Distributed StoragePlatform (UDSP) agent, wherein said UDSP agent is configured to: receivea task comprising at least one assignment; calculate grades for at leastone of said assignments in respect of at least one of saidinterconnected computer nodes, such that each grade being indicative ofa suitability of a respective computer node of said interconnectedcomputer nodes to execute a respective assignment of said assignmentswhile meeting at least one Service Level Specification (SLS)requirement, said grade is calculated also based on storage-relatedresources parameters data relating to one or more storage relatedresources connected to said respective computer node, if any; based onthe calculated grades, execute one or more of said assignments or routethe task to a more suitable computer node of said infrastructure layerirrespective of the ability of said computer node to execute said one ormore of said assignments; calculate grades for assignments of followingtasks in respect of at least one modified interconnected computer nodeof an updated infrastructure layer, said updated infrastructure layer iscreated in response to a modification of at least one interconnectedcomputer node; said modification including at least one of (i) at leastone new storage-related resource is connected to the respective node(ii) at least one existing storage-related resource is disconnected fromthe respective node (iii) at least one existing storage-related resourceis modified; and execute one or more of said assignments of followingtasks or route said following tasks to a more suitable computer node ofsaid updated infrastructure layer, based on the calculated grades. 62.The computer node of claim 61 wherein said UDSP agent is furtherconfigured to: receive dynamic behavior parameters data relating todynamic behavior of the distributed storage system; when at least oneSLS requirement is breached, calculate a reconfiguration for thedistributed storage system, based, at least, on said at least one SLSrequirement, said storage-related resources parameters data and saiddynamic behavior parameters data; and automatically allocate at leastpart of one of said storage-related resources according to thecalculated reconfiguration.
 63. The computer node of claim 61 whereinwhile calculating grades for said assignments of following tasks, saidupdated infrastructure layer is created, and said calculation isperformed in respect of at least one modified interconnected computernode of the created updated infrastructure layer.
 64. The computer nodeof claim 61 wherein while calculating grades for said assignments offollowing tasks, said updated infrastructure layer is created, and saidcalculation is performed in respect of at least one interconnectedcomputer node of the created updated infrastructure layer.
 65. Thecomputer node of claim 61 wherein said updated infrastructure layer iscreated dynamically.
 66. The computer node of claim 61 wherein said oneor more storage-related resources include at least one storage-relatedresource of the following storage-related resource categories: cacheresources, data storage resources and network resources.
 67. A method ofoperating a computer node configured to being connected to aninfrastructure layer of a distributed storage system, saidinfrastructure layer including interconnected computer nodes, at leastone of said interconnected computer nodes comprising one or morestorage-related resources, the method comprising: receiving a taskcomprising at least one assignment; calculating grades for at least oneof said assignments in respect of at least one of said interconnectedcomputer nodes, such that each grade being indicative of a suitabilityof a respective computer node of said interconnected computer nodes toexecute a respective assignment of said assignments while meeting atleast one Service Level Specification (SLS) requirement, said grade iscalculated also based on storage-related resources parameters datarelating to one or more storage related resources connected to saidrespective computer node, if any; based on the calculated grades,executing one or more of said assignments or routing the task to a moresuitable computer node of said infrastructure layer irrespective of theability of said computer node to execute said one or more of saidassignments; calculating grades for assignments of following tasks inrespect of at least one modified interconnected computer node of anupdated infrastructure layer, said updated infrastructure layer iscreated in response to a modification of at least one interconnectedcomputer node; said modification including at least one of (i) at leastone new storage-related resource is connected to the respective node(ii) at least one existing storage-related resource is disconnected fromthe respective node (iii) at least one existing storage-related resourceis modified; and executing one or more of said assignments of followingtasks or routing said following tasks to a more suitable computer nodeof said updated infrastructure layer, based on the calculated grades.68. The method of claim 67 further comprising: receiving dynamicbehavior parameters data relating to dynamic behavior of the distributedstorage system; when at least one SLS requirement is breached,calculating a reconfiguration for the distributed storage system, based,at least, on said at least one SLS requirement, said storage-relatedresources parameters data and said dynamic behavior parameters data; andautomatically allocating at least part of one of said storage-relatedresources according to the calculated reconfiguration.
 69. The method ofclaim 67 wherein while calculating grades for said assignments offollowing tasks, said updated infrastructure layer is created, and saidcalculating is performed in respect of at least one modifiedinterconnected computer node of the created updated infrastructurelayer.
 70. The method of claim 67 wherein while calculating grades forsaid assignments of following tasks, said updated infrastructure layeris created, and said calculating is performed in respect of at least oneinterconnected computer node of the created updated infrastructurelayer.
 71. The method of claim 67 wherein said updated infrastructurelayer is created dynamically.
 72. The method of claim 67 wherein saidone or more storage-related resources include at least onestorage-related resource of the following storage-related resourcecategories: cache resources, data storage resources and networkresources.
 73. A computer node configured to being connected to aninfrastructure layer of a distributed storage system, saidinfrastructure layer including interconnected computer nodes, thecomputer node comprising: at least one processing resource configured toexecute a Unified Distributed Storage Platform (UDSP) agent, whereinsaid UDSP agent is configured to: receive at least one Service LevelSpecification (SLS) comprising user-defined storage requirementsreferring to at least one logical storage entity, and storage-relatedresources parameters data relating to one or more storage-relatedresources connected to said interconnected computer nodes; calculate aconfiguration for the distributed storage system based, at least, onsaid at least one SLS and said storage-related resources parametersdata; automatically allocate at least part of one of saidstorage-related resources according to the calculated configuration;receive dynamic behavior parameters data relating to dynamic behavior ofthe distributed storage system; upon at least one SLS being breached,calculate a reconfiguration for the distributed storage system, based,at least, on said at least one SLS, said storage-related resourcesparameters data and said dynamic behavior parameters data; andautomatically allocate at least part of one of said storage-relatedresources according to the calculated reconfiguration.
 74. The computernode of claim 73 wherein said UDSP agent is further configured to:receive a task comprising at least one assignment; calculate grades forat least one of said assignments in respect of at least one of saidinterconnected computer nodes, such that each grade being indicative ofa suitability of a respective computer node of said interconnectedcomputer nodes to execute a respective assignment of said assignmentswhile meeting at least one user-defined storage-related requirement ofsaid at least one SLS, said grade is calculated also based on parametersdata relating to one or more storage-related resources connected to saidrespective computer node, if any; execute one or more of saidassignments or route the task to a more suitable computer node, based onthe calculated grades; calculate grades for assignments of followingtasks in respect of at least one added interconnected computer node ofan updated infrastructure layer; said updated infrastructure layer iscreated in response to adding at least one additional interconnectedcomputer node thereto; and execute one or more of said assignments offollowing tasks or route said following tasks to a more suitablecomputer node of said updated infrastructure layer, based on thecalculated grades.
 75. The computer node of claim 73 wherein saidconfiguration is calculated by an optimization engine.
 76. The computernode of claim 75 wherein said optimization engine uses one or more ofthe following optimization techniques: a. Linear programming; b.Simulated annealing; c. Genetic algorithms.
 77. The computer node ofclaim 76 wherein the one or more optimization techniques uses heuristicsor approximates.
 78. The computer node of claim 73 wherein said at leastone user-defined storage-related requirement includes at least one of:a. location; b. local protection level; c. backup retention policy; d.remote protection level; e. performance levels f. encryption level; g.de-duplication; h. compression; i. storage method.
 79. The computer nodeof claim 73 wherein said one or more storage-related resources includeat least one storage-related resource of the following storage-relatedresource categories: cache resources, data storage resources and networkresources.
 80. The computer node of claim 73 wherein saidstorage-related resources are distributed among at least two locations.81. The computer node of claim 73 wherein said configuration includesover committing the storage-related resources of the distributed storagesystem.
 82. The computer node of claim 73 wherein said UDSP agent isfurther configured, in response to a failure to determine saidconfiguration, to provide a user with a failure notification or with arecommendation indicative of an addition of at least one additionalstorage-related resource which will allow successful calculation of aconfiguration.
 83. A method of operating a computer node configured tobeing connected to an infrastructure layer of a distributed storagesystem, said infrastructure layer including interconnected computernodes, at least one of said interconnected computer nodes comprising oneor more storage-related resources, the method comprising: receiving atleast one Service Level Specification (SLS) comprising user-definedstorage requirements referring to at least one logical storage entity,and storage-related resources parameters data relating to one or morestorage-related resources connected to said interconnected computernodes; calculating a configuration for the distributed storage systembased, at least, on said at least one SLS and said storage-relatedresources parameters data; automatically allocating at least part of oneof said storage-related resources according to the calculatedconfiguration; receiving dynamic behavior parameters data relating todynamic behavior of the distributed storage system; upon at least oneSLS being breached, calculating a reconfiguration for the distributedstorage system, based, at least, on said at least one SLS, saidstorage-related resources parameters data and said dynamic behaviorparameters data; and automatically allocating at least part of one ofsaid storage-related resources according to the calculatedreconfiguration.
 84. The method of claim 83 further comprising:receiving a task comprising at least one assignment; calculating gradesfor at least one of said assignments in respect of at least one of saidinterconnected computer nodes, such that each grade being indicative ofa suitability of a respective computer node of said interconnectedcomputer nodes to execute a respective assignment of said assignmentswhile meeting at least one Service Level Specification (SLS)requirement, said grade is calculated also based on parameters datarelating to one or more storage-related resources connected to saidrespective computer node, if any; executing one or more of saidassignments or route the task to a more suitable computer node, based onthe calculated grades; calculating grades for assignments of followingtasks in respect of at least one added interconnected computer node ofan updated infrastructure layer; said updated infrastructure layer iscreated in response to adding at least one additional interconnectedcomputer node thereto; and executing one or more of said assignments offollowing tasks or routing said following tasks to a more suitablecomputer node of said updated infrastructure layer, based on thecalculated grades.
 85. The method of claim 83 wherein said calculating aconfiguration is performed by an optimization engine.
 86. The method ofclaim 85 wherein said optimization engine uses one or more of thefollowing optimization techniques: a. Linear programming; b. Simulatedannealing; c. Genetic algorithms.
 87. The method of claim 86 wherein theone or more optimization techniques uses heuristics or approximates. 88.The method of claim 83 wherein said at least one user-definedstorage-related requirement includes at least one of: a. location; b.local protection level; c. backup retention policy; d. remote protectionlevel; e. performance levels f. encryption level; g. de-duplication; h.compression; i. storage method.
 89. The method of claim 83 wherein saidone or more storage-related resources include at least onestorage-related resource of the following storage-related resourcecategories: cache resources, data storage resources and networkresources.
 90. The method of claim 83 wherein said storage-relatedresources are distributed among at least two locations.
 91. The methodof claim 83 wherein said configuration includes over committing thestorage-related resources of the distributed storage system.
 92. Themethod of claim 83 further comprising: in response to a failure todetermine said configuration, providing a user with a failurenotification or with a recommendation indicative of an addition of atleast one additional resource which will allow successful calculation ofa configuration.
 93. A distributed storage system comprising: aninfrastructure layer including interconnected computer nodes, wherein:each one of said interconnected computer nodes comprising at least oneprocessing resource configured to execute a Unified Distributed StoragePlatform (UDSP) agent; wherein said UDSP agent is configured to: receiveat least one Service Level Specification (SLS) comprising user-definedstorage requirements referring to at least one logical storage entity,and storage-related resources parameters data relating to one or morestorage-related resources connected to said interconnected computernodes; calculate a configuration for the distributed storage systembased, at least, on said at least one SLS and said storage-relatedresources parameters data; automatically allocate at least part of oneof said storage-related resources according to the calculatedconfiguration; receive dynamic behavior parameters data relating todynamic behavior of the distributed storage system; upon at least oneSLS being breached, calculate a reconfiguration for the distributedstorage system, based, at least, on said at least one SLS, saidstorage-related resources parameters data and said dynamic behaviorparameters data; and automatically allocate at least part of one of saidstorage-related resources according to the calculated reconfiguration.94. The distributed storage system of claim 93 wherein said UDSP agentis further configured to: receive a task comprising at least oneassignment; calculate grades for at least one of said assignments inrespect of at least one of said interconnected computer nodes, such thateach grade being indicative of a suitability of a respective computernode of said interconnected computer nodes to execute a respectiveassignment of said assignments while meeting at least one user-definedstorage requirement of said at least one SLS, said grade is calculatedalso based on parameters data relating to one or more storage-relatedresources connected to said respective computer node, if any; executeone or more of said assignments or route the task to a more suitablecomputer node, based on the calculated grades; calculate grades forassignments of following tasks in respect of at least one addedinterconnected computer node of an updated infrastructure layer; saidupdated infrastructure layer is created in response to adding at leastone additional interconnected computer node thereto; and execute one ormore of said assignments of following tasks or route said followingtasks to a more suitable computer node of said updated infrastructurelayer, based on the calculated grades.
 95. The distributed storagesystem of claim 93 wherein said configuration is calculated by anoptimization engine.
 96. The distributed storage system of claim 95wherein said optimization engine uses one or more of the followingoptimization techniques: a. Linear programming; b. Simulated annealing;c. Genetic algorithms.
 97. The distributed storage system of claim 96wherein the one or more optimization techniques uses heuristics orapproximates.
 98. The distributed storage system of claim 93 whereinsaid at least one user-defined storage-related requirement includes atleast one of: a. location; b. local protection level; c. backupretention policy; d. remote protection level; e. performance levels f.encryption level; g. de-duplication; h. compression; i. storage method.99. The distributed storage system of claim 93 wherein said one or morestorage-related resources include at least one storage-related resourceof the following storage-related resource categories: cache resources,data storage resources and network resources.
 100. The distributedstorage system of claim 93 wherein said storage-related resources aredistributed among at least two locations.
 101. The distributed storagesystem of claim 93 wherein said configuration includes over committingthe storage-related resources of the distributed storage system. 102.The distributed storage system of claim 93 wherein said UDSP agent isfurther configured, in response to a failure to determine saidconfiguration, to provide a user with a failure notification or with arecommendation indicative of an addition of at least one additionalresource which will allow successful calculation of a configuration.103. A distributed storage system comprising: an infrastructure layerincluding interconnected computer nodes, wherein: each one of saidinterconnected computer nodes comprising at least one processingresource configured to execute a Unified Distributed Storage Platform(UDSP) agent; wherein said UDSP agent is configured to: receive at leastone Service Level Specification (SLS) comprising user-defined storagerequirements referring to at least one logical storage entity, andstorage-related resources parameters data relating to one or morestorage-related resources connected to said interconnected computernodes; calculate a configuration for the distributed storage systembased, at least, on said at least one SLS and said storage-relatedresources parameters data; and automatically allocate at least part ofone of said storage-related resources according to the calculatedconfiguration.
 104. A computer node configured to being connected to aninfrastructure layer of a distributed storage system, saidinfrastructure layer including interconnected computer nodes, thecomputer node comprising: at least one processing resource configured toexecute a Unified Distributed Storage Platform (UDSP) agent, whereinsaid UDSP agent is configured to: receive at least one Service LevelSpecification (SLS) comprising user-defined storage requirementsreferring to at least one logical storage entity, and storage-relatedresources parameters data relating to one or more storage-relatedresources connected to said interconnected computer nodes; calculate aconfiguration for the distributed storage system based, at least, onsaid at least one SLS and said storage-related resources parametersdata; and automatically allocate at least part of one of saidstorage-related resources according to the calculated configuration.105. A method of operating a computer node configured to being connectedto an infrastructure layer of a distributed storage system, saidinfrastructure layer including interconnected computer nodes, the methodcomprising: receiving at least one Service Level Specification (SLS)comprising user-defined storage requirements referring to at least onelogical storage entity, and storage-related resources parameters datarelating to one or more storage-related resources connected to saidinterconnected computer nodes; calculating a configuration for thedistributed storage system based, at least, on said at least one SLS andsaid storage-related resources parameters data; and automaticallyallocating at least part of one of said storage-related resourcesaccording to the calculated configuration.
 106. A distributed storagesystem comprising: an infrastructure layer including interconnectedcomputer nodes, wherein: each one of said computer nodes comprising atleast one processing resource configured to execute a UnifiedDistributed Storage Platform (UDSP) agent; at least one of saidinterconnected computer nodes comprising one or more otherstorage-related resources; said UDSP agent is configured to: receive atask comprising at least one assignment; calculate grades for at leastone of said assignments in respect of at least one of saidinterconnected computer nodes, such that each grade being indicative ofa suitability of a respective computer node of said interconnectedcomputer nodes to execute a respective assignment of said assignmentswhile meeting at least one Service Level Specification (SLS)requirement; and based on the calculated grades, execute one or more ofsaid assignments or route the task to a more suitable computer node ofsaid infrastructure layer irrespective of the ability of said computernode to execute said one or more of said assignments.
 107. A computernode configured to being connected to an infrastructure layer of adistributed storage system, said infrastructure layer includinginterconnected computer nodes comprising: at least one processingresource configured to execute a Unified Distributed Storage Platform(UDSP) agent, wherein said UDSP agent is configured to: receive a taskcomprising at least one assignment; calculate grades for at least one ofsaid assignments in respect of at least one other computer nodeconnected to said infrastructure layer and comprising one or morestorage-related resources, such that each grade being indicative of asuitability of a respective computer node of said interconnectedcomputer nodes to execute a respective assignment of said assignmentswhile meeting at least one Service Level Specification (SLS)requirement; and based on the calculated grades, execute one or more ofsaid assignments or route the task to a more suitable computer nodeirrespective of the ability of said computer node to execute said one ormore of said assignments.
 108. A method of operating a computer nodeconfigured to being connected to an infrastructure layer of adistributed storage system, said infrastructure layer includinginterconnected computer nodes, the method comprising: receiving a taskcomprising at least one assignment; calculating grades for at least oneof said assignments in respect of at least one other computer nodeconnected to said infrastructure layer and comprising one or morestorage-related resources, such that each grade being indicative of asuitability of a respective computer node of said interconnectedcomputer nodes to execute a respective assignment of said assignmentswhile meeting at least one Service Level Specification (SLS)requirement; and based on the calculated grades, executing one or moreof said assignments or routing the task to a more suitable computer nodeirrespective of the ability of said computer node to execute said one ormore of said assignments.